让浏览器不再彰显 https 页面中的 http 请求警报
2015/08/26 · 基本功技术 ·
HTTPS,
浏览器
原稿出处:
李靖(@Barret李靖)
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改造之后,大家得以在广大页面中见到如下警报:
很多营业对 https 没有技术概念,在填充的数码中难免出现 http
的资源,序列庞大,出现疏忽和尾巴也是不可防止的。
WebView不帮忙Https请求(需认证),这么些时候大家可以经过重写onReceivedSslError这些法子并实施handler.proceed
()这么些点子,可以达成页面显示的职能
CSP设置upgrade-insecure-requests
好在 W3C 工作组考虑到了俺们升级 HTTPS 的不便,在 2015 年 8月份就出了一个 Upgrade Insecure Requests
的草案,他的功用就是让浏览器自动升级请求。
在我们服务器的响应头中参预:
header(“Content-Security-Policy: upgrade-insecure-requests”);
1
|
header("Content-Security-Policy: upgrade-insecure-requests");
|
我们的页面是 https 的,而以此页面中带有了大量的 http
资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http
资源时自动替换成 https 请求。可以查看 google
提供的一个 demo:
然而令人不解的是,这些资源发出了一遍呼吁,臆度是浏览器实现的 bug:
理所当然,假如大家不便于在服务器/Nginx
上操作,也足以在页面中参与 meta
头:
XHTML
<meta http-equiv=”Content-Security-Policy”
content=”upgrade-insecure-requests” />
1
|
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
|
脚下支撑这一个装置的还只有 chrome 43.0,可是自己相信,CSP 将变成将来 web
前端安全努力关怀和利用的始末。而 upgrade-insecure-requests
草案也会快速进入
RFC 格局。
从 W3C
工作组给出的 example,可以看看,这多少个设置不会对别国的
a 链接做拍卖,所以可以放心使用。
1 赞 收藏
评论
clipboard.png