从昨天开始,我在Chrome和IE浏览器上的网站上都出现了混合内容错误。该错误是由标题中包含的Google翻译脚本引发的:
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
我下载了文件element.js并最终找出了bug的来源:
var s = window.location.protocol == 'https' ? 'https' : 'http';
使用(任何)浏览器控制台,我们可以看到表达式“window.location.protocol”在所有安全网站中返回“https:”(而不是“http”)。因此,脚本会尝试加载一堆所需的CSS / JavaScript资源,并在其URL前加上“http”而不是“https”。
导致以下错误(每个资源一个):
The page at https://mysite.com ran insecure content from http://translate.googleapis.com/[something].css
Google翻译工具对我的用户非常有用,因此我无法将其删除。此外,我尝试下载脚本并在本地运行它,但它不起作用。我花了很多时间在这个问题上,我是唯一一个在这种情况下或最近在谷歌翻译脚本中发生了什么变化的人吗?
[编辑]
我刚看了一下Google Analytics代码,发现:
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www');
这强化了Google翻译脚本也应测试“https:”的想法。