留言本-CmdEye技术交流博客
留言本-CmdEye技术交流博客
留言本-CmdEye技术交流博客

让浏览器不再显示 https 页面中的 http 请求警报

HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错:

Mixed Content: The page at ‘https://www.taobao.com/‘ was loaded over HTTPS, but requested an insecure image ‘http://g.alicdn.com/s.gif’. This content should also be served over HTTPS.

HTTPS改造之后,我们可以在很多页面中看到如下警报:

图片[1]-让浏览器不再显示 https 页面中的 http 请求警报-CmdEye技术交流博客

什么是 Mixed Content

混合内容(Mixed Content)在以下情况下出现:初始 HTML 内容通过安全的 HTTPS 连接加载,但其他资源(例如,图像、视频、样式表、脚本)则通过不安全的 HTTP 连接加载。之所以称为混合内容,是因为同时加载了 HTTP 和 HTTPS 内容以显示同一个页面,且通过 HTTPS 加载的初始请求是安全的。现代浏览器会针对此类型的内容显示警告,以向用户表明此页面包含不安全的资源。

使用不安全的 HTTP 协议请求子资源会降低整个页面的安全性,因为这些请求容易受到中间人攻击,攻击者窃听网络连接,查看或修改双方的通信。通过使用这些资源,攻击者通常可以完全控制页面,而不只是泄露的资源。

尽管许多浏览器向用户报告混合内容警告,但出现警告时为时已晚:不安全的请求已被执行,且页面的安全性被破坏。遗憾的是,这种情况在网络中很普遍,正因如此,浏览器不能简单地阻止所有混合请求,否则将会限制许多网站的功能。

upgrade-insecure-requests CSP 指令的作用就是让浏览器自动升级请求,防止访问者访问不安全的内容。
该指令用于让浏览器自动升级请求从http到https,用于大量包含http资源的http网页直接升级到https而不会报错.简洁的来讲,就相当于在http和https之间起的一个过渡作用.

html强制让http的访问Https

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"/>

php强制让http的访问Https

header("Content-Security-Policy: upgrade-insecure-requests");

nginx 强制让http的访问Https

server
{
    #HTTP_TO_HTTPS_END
    ssl_certificate    /etc/letsencrypt/live/yogayx.com/fullchain.pem;
    ssl_certificate_key    /etc/letsencrypt/live/yogayx.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";

    error_page 497  https://$host$request_uri;
}



在经过反复测试后

add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";

解决了全部问题,即消除全部警告,同时兼容了各种协议资源。

温馨提示:本文最后更新于2021-10-25 10:51:49,某些文章具有时效性,若有错误或已失效,请在下方留言或联系CmdEye
© 版权声明
THE END
喜欢就支持一下吧
点赞16赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片