当前位置:首页 > 娱乐

https有红线怎么解决

昨天半夜,红线朋友老周发来一张截图,解决是红线他们公司官网在微信里被拦的样子——红底白字,写着“该网页包含不安全内容”。解决他问我:“这红线到底踩哪了?红线我们连支付都没做。”

我打开他给的解决测试域名一看,好家伙,红线页面里混着两个http的解决资源。一个是红线客服头像,另一个是解决统计脚本。就这两根小刺,红线让整个https页面被浏览器判了死刑。解决

这事太常见了。红线很多团队以为上了https就万事大吉,解决却忘了页面里那些“漏网之鱼”——图片、红线样式、脚本、甚至iframe,只要有一个走http,浏览器就会认为你的加密是假的。好比你把家门换成了指纹锁,但窗户还开着一条缝。

怎么查?别用眼睛找,用控制台。F12打开Network,刷新页面,挨个看请求的协议。或者更狠一点,直接看浏览器地址栏左侧的锁图标,点开它,Chrome会直接告诉你“此页面上的不安全内容”。

找到之后,处理办法分三种。

第一种,能改就改。把http改成https,如果对方的服务器支持,这活儿五分钟完事。像那些CDN资源、公共库,基本都支持https,改个字母就行。

第二种,改不了的,用协议相对URL。把“http://”或者“https://”整个去掉,只写“//cdn.example.com/xxx.js”。这样浏览器会自动沿用当前页面的协议,页面是https,它就自动走https。这个土办法,老程序员都懂,但新团队经常忽略。

第三种,彻底没法改的,比如某些老第三方接口,只提供http。这时候就得用反向代理了。在你自己的服务器上开个https接口,转发到对方的http地址,让浏览器只跟你的https打交道。代价是增加一点延迟,但安全红线守住了。

处理完别急着收工。用curl或者在线检测工具再扫一遍全站链接,因为有些资源是动态加载的,比如用户上传的头像,可能存在数据库里就是http开头的绝对路径。这类问题最坑——本地测试没事,一上线就红。

还有个小细节。有时候你改了资源地址,但浏览器缓存了旧的,页面还是红的。强制刷新(Ctrl+Shift+R)或者开无痕窗口再测,别被假象骗了。

老周那个网站,最后花了二十分钟解决。两个资源,一个改https,一个用协议相对URL。他跟我说:“原来就这点事。”我说:“是啊,但这点事能让你整站流量掉一半,信不信?”他信了。

红线就在那,不因你项目小而网开一面。浏览器很轴,它只认协议对不对,不认你辛苦不辛苦。

分享到: