Https
概述
Tomcat 支持 HTTPS
Nginx 支持 HTTPS
浏览器 Https 拦截证书风险
问题:https 系统访问时验证码加载不出来,但拷贝地址新开窗口可以加载到,后面系统就可以加载验证码了
原因:使用了自签名证书,不是合法证书,默认浏览器会拦截非法证书,由用户确认后才能执行后面的操作
解决:打开浏览器设置-高级设置-Https/SSL-拦截证书风险,不要勾选
HTTPS 页面引用外部资源
问题
- 浏览器默认是不允许在 HTTPS 页面中引用 HTTP 资源「外部资源」,一般都会弹出提示框,用户确认后才会继续加载
- 在 HTTPS 页面里动态的引入 HTTP 资源,比如引入一个 js 文件,会被直接 block「阻塞」
- 在 HTTPS 页面中通过 ajax 加载 HTTP 数据,也会被浏览器拦截
解决
相对协议
如果你的网站同时支持 HTTP 和 HTTPS 访问,那么可以使用相对协议引入外部资源,达到 HTTP 和 HTTPS 的无缝切换
- 将URL的协议(HTTP、HTTPS)去掉,只保留
//
及后面的内容。这样,在 HTTPS 的网站中,浏览器会通过 HTTPS 请求URL,否则就通过 HTTP 发送请求 - 前提是外部资源也必须同时支持 HTTP 和 HTTPS
1 | <img src="//xxx.com/img/logo.png"> |
1 | .div { background: url(//xxx.net/ggg.gif); } |
iframe
HTTPS 页面里通过 iframe 内嵌 HTTP 页面,HTTP 页面中完成资源调度,例如视频播放
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 王文哲的博客!