在spring boot下,让服务器同时支持http、https(Https系列三)
在spring boot下,让服务器同时支持http、https(Https系列三)
前面已详情了:”https在服务器端的部署,基于tomcat,spring boot”
但我们会发现一个问题,只可以使用https登录我们的网站,而不可以使用http
假设我们的网站名为:www.my.com
假如是之前的http,我们只要在浏览器中输入:my.com
浏览器就会自动登录到:http:// www.my.com
但部署了https后,发现在浏览器中输入:my.com,返回的结果是:无法访问此网站
这对使用户来说,体验是非常不好的。
好吧,那我们试试少量比较有名的网站,如阿里云。
在浏览器中输入:aliyun.com
就可以自动跳转到:https: //www.aliyun.com
那我们可以不可以在部署了https后,在输入:my.com
自动跳转到https对应的: https:// www.my.com
或者
仍然跳转到:http:// www.my.com ?
答案是,上面两种方法都能的,任君选择
下面详情的就是以上要求基于spring boot的实现
直接上代码:
其中,下面代码的作使用是把此EmbeddedServletContainerFactory 注入到web容器中
而后,使用下面的代码阻拦所有的/*请求
并把其关联到下面的httpConnector中
最后,在public Connector httpConnector()中,
把http设为默认的80端口,并把http的请求跳转到443的https端口
其中443是https的默认端口,也能设为其它的值,但要和resources/application.properties的内容对应
如下:
运行服务器,会看到打印如下:
其中会看到TomcatEmbeddedServletContainer,和同时开启的两个端口:443 (https) 80 (http)
Ok,那现在试试输入:my.com,就会发现浏览器会直接跳到:https:// www.my.com了
到此,这件事情就算是大功告成了。
但此时有同学可可以会提出特殊的要求:
他的https只是为了某某的要求而用的,比方说要接入什么什么的肯定要填的是https的地址
而他的网站根本就不需要https这种安全级别的,另外,他觉得http的访问速度可可以会快点,你知到有些同学是有这种洁癖的 :p
也就是说:
输入:my.com,跳到: http:// www.my.com
输入:https:// www.my.com,跳到:https:// www.my.com
要实现此要求,其实很简单,只要要把:
改为
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 在spring boot下,让服务器同时支持http、https(Https系列三)