1、原因
HTTPS 网站中不允许出现 HTTP 协议,浏览器会直接进行屏蔽,所以网络请求根本发不出去
具体原因包括:
1.安全风险
混合内容警告:当 HTTPS 页面中包含 HTTP 资源(如图片、脚本、样式表等)时,现代浏览器会将其视为 “混合内容”。浏览器通常会向用户发出警告,提示该页面存在不安全的部分。这不仅破坏了用户体验,还可能导致用户对网站的安全性产生怀疑,降低信任度。
中间人攻击风险:HTTP 协议不加密传输数据,攻击者可以利用网络漏洞,在 HTTP 资源传输过程中进行中间人攻击。例如,篡改 HTTP 脚本内容,注入恶意代码,从而窃取用户信息(如登录凭证、个人数据等),或者进行钓鱼攻击,误导用户执行有害操作。而 HTTPS 通过 SSL/TLS 加密,能有效防止中间人攻击,若 HTTPS 页面包含 HTTP 资源,就如同在坚固的防线中打开了一个缺口,使整个页面的安全性大打折扣。
2. 违反 HTTPS 规范
数据完整性要求:HTTPS 旨在确保数据从服务器到客户端传输过程中的完整性。当引入 HTTP 资源时,由于 HTTP 本身不具备数据完整性校验机制,这些资源可能在传输过程中被篡改,这与 HTTPS 保证数据完整性的目标相悖。
加密一致性:HTTPS 通过建立加密通道来保护数据传输。如果页面部分使用 HTTP,部分使用 HTTPS,就破坏了加密的一致性。整个页面不能再被视为完全安全加密的环境,无法为用户提供可靠的隐私保护。
3. 搜索引擎优化影响
排名因素:主流搜索引擎(如谷歌、百度等)越来越重视网站的安全性。含有 HTTP 混合内容的 HTTPS 网站,在搜索引擎眼中可能被视为不够安全或存在隐患。这可能导致网站在搜索结果中的排名受到负面影响,降低网站的曝光度和流量。
2.解决方法
我是通过使用nginx代理,把https的后面在转发出去达到效果了
有能力的话,把后端也配置成hppts就不会出现这个问题