4

昨日から、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:」もテストする必要があるという考えを強化します。

4

0 に答える 0