web-dev-qa-db-ja.com

307 Chromeでanalytics.jsをロードする際のリダイレクト

Webアプリを構築し、分析にGoogle Analytics(analytics.js)を使用しています。最近、Chromeでアナリティクスが正しく機能しないことに気付きました。

別のモジュールで標準コードスニペットを使用し、requirejsを介して含まれる分析をロードしています。このスクリプトが期待どおりに実行され、分析スニペットを実行することを確認しました。

Firefoxでネットワークトラフィックを検査すると、分析スクリプトが期待どおりにGoogleからロードされていることがわかります(HTTP 200応答)。

enter image description here

ただし、Chromeでまったく同じページを実行すると、about:blankを指すHTTP 307応答が返され、分析は実行されません。

enter image description here

ただし、分析URLをChromeアドレスバーに直接貼り付けると、スクリプトが見つかります。ここで何が起こっているのか、それを修正する方法はありますか?

72
Benj

私の場合、307リダイレクトの理由はもっと平凡でした。 protocol-relative URLs を使用する習慣から、Google Universal Analyticsの埋め込みスクリプトのURLからプロトコルを削除し、https://www.google-analytics.com/analytics.jsから//www.google-analytics.com/analytics.js

たとえば、(自宅でこれを試さないでください):

(function(i、s、o、g、r、a、m){i ['GoogleAnalyticsObject'] = r; i [r] = i [r] || function(){(i [r] .q = i [r] .q || [])。Push(arguments)}、i [r] .l = 1 * new Date(); a = s.createElement(o)、m = s.getElementsByTagName(o)[ 0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a、m)})(window、document、 'script'、 'https:// www.google-analytics.com/analytics.js','ga ');

これは、Googleがhttps経由でのみスクリプトおよびトラッキングリクエストを処理しているようだからです。そのため、プロトコルを削除すると、最初にスクリプトを埋め込むときと、後続の追跡要求(!)の両方でリダイレクトが発生します。さらに、Paul Irishによる プロトコル相対URLに関する標準的な投稿 の更新で述べられているように、この手法は推奨されないか、実際にメリットがあります。

SSLはすべての人に推奨されており、パフォーマンスの懸念がないため、この手法はアンチパターンになりました。必要なアセットがSSLで利用可能な場合は、常にhttps://アセットを使用してください。

8
Boaz

私の場合、ブラウザでUBlock Originを有効にしています。切断されるかサイトが承認されると、内部リダイレクトは停止しました

1
John D.