4

从昨天开始,我的网站在 Chrome 和 IE 中都出现混合内容错误。该错误是由标题中包含的 Google 翻译脚本引起的:

<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

我下载了文件 element.js 并最终找出了错误的来源:

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 Analytics 代码,发现:

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www');

这强化了谷歌翻译脚本也应该测试“https:”的想法。

4

0 回答 0