在 HTTPS 页面上使用计数器
一个使用 HTTPS 的网站,访客能看到一个小锁图标。然后页面里粘贴进了来自另一个网站的东西,小锁图标消失了——或者粘贴进去的东西干脆就不出现了。
这就是混合内容问题,值得花十分钟弄清楚,因为它会悄无声息地破坏很多旧的嵌入式小组件。
浏览器对此做了什么
一个通过 HTTPS 加载的页面,不允许悄悄地通过明文 HTTP 拉取自己的部分内容。能够篡改一个未加密图片请求的窃听者,就能篡改访客看到的内容,所以浏览器拒绝让两者混在一起。
对于图片和脚本,现代浏览器要么自行把请求升级为 HTTPS,要么直接拦截。具体会是哪一种,取决于浏览器和资源类型,而这两种结果都不值得依赖。
Stats4U 的应对方式
已经在两个地方处理好了。脚本内部写入的计数端点地址就是 HTTPS,所以不管加载它的页面本身是怎么提供的,它发出的每一个请求都是加密的。而且服务器对明文 HTTP 请求会用永久重定向跳转到 HTTPS——撰写本文时已经核实过,脚本本身和计数器图片都是如此。
因此,用当前代码片段嵌入的计数器不会破坏锁标,也没有什么需要配置的。
唯一仍可能出问题的情况
如果曾经有人把计数器脚本复制进了站点自己的页面,而不是链接到它——这在当年是常见做法,直到今天仍有页面这么做——那么跑着的就是当初那个时间点被冻结下来的一份副本。一份足够老的副本,内部写的就是明文 HTTP 地址,而我们这边不管怎么修复都触及不到它。
花两分钟检查一下:查看页面的源代码,搜索 http:// 加上我们的域名。如果找到了,就把整段嵌入代码替换成统计页面上当前提供的代码片段。
顺便说一句,更值得的做法是链接这个脚本,而不是自己托管一份副本。另有一篇文章专门讲了原因,而这个道理远不止适用于计数器。
广告