昨日から、Chrome と IE の両方で、Web サイトに混合コンテンツ エラーが発生しました。エラーは、ヘッダーに含まれる 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';
(任意の) ブラウザー コンソールを使用すると、すべての安全な Web サイトで "window.location.protocol" という式が "https:" ("http" ではなく) を返すことがわかります。したがって、スクリプトは必要な CSS/JavaScript リソースの束を読み込もうとし、それらの URL の前に「https」ではなく「http」を付けます。
次のエラーが発生します (リソースごとに 1 つ)。
The page at https://mysite.com ran insecure content from http://translate.googleapis.com/[something].css
Google 翻訳ツールはユーザーにとって非常に便利なので、削除できません。また、スクリプトをダウンロードしてローカルで実行しようとしましたが、うまくいきません。私はその問題に多くの時間を費やしました。そのような状況にあるのは私だけですか、それとも Google 翻訳スクリプトで最近変更されたものですか?
[編集]
Google アナリティクスのコードを調べたところ、次のことがわかりました。
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www');
これは、Google 翻訳スクリプトが「https:」もテストする必要があるという考えを強化します。