クライアント側の JavaScript 内で、HTTP 要求ヘッダー フィールド (主に Referer と User-Agent) をキャプチャしたいと考えています。どうすればそれらにアクセスできますか?
Google アナリティクスは、ページに埋め込まれた JavaScript を介してデータを取得するため、確実に可能です。
クライアント側の JavaScript 内で、HTTP 要求ヘッダー フィールド (主に Referer と User-Agent) をキャプチャしたいと考えています。どうすればそれらにアクセスできますか?
Google アナリティクスは、ページに埋め込まれた JavaScript を介してデータを取得するため、確実に可能です。
リファラーとユーザー エージェントにアクセスする場合、それらはクライアント側の Javascript で利用できますが、ヘッダーに直接アクセスすることはできません。
リファラーを取得するには、 を使用しますdocument.referrer
。
ユーザー エージェントにアクセスするには、 を使用しますnavigator.userAgent
。
他の人が示したように、HTTP ヘッダーは利用できませんが、Javascript を介して利用できるリファラーとユーザー エージェントについて具体的に尋ねました。
ほとんど定義上、クライアント側の JavaScript は http 要求の受信側にはないため、読み取るヘッダーがありません。最も一般的なのは、JavaScript は http 応答の結果です。応答を生成した http 要求の値を取得しようとしている場合は、生成する JavaScript にそれらの値を埋め込むサーバー側コードを作成する必要があります。
サーバー側のコードにクライアント側のコードを生成させるのは少し難しいので、それが必要なものであることを確認してください。たとえば、ユーザー エージェント情報が必要な場合は、JavaScript がブラウザー検出のために提供するさまざまな値を取得するだけで十分な場合があります。navigator.appName と navigator.appVersion から始めます。
これは、読み込まれたドキュメントのプロパティであり、親のプロパティではないため、Javascript を介してアクセスできます。
簡単な例を次に示します。
<script type="text/javascript">
document.write(document.referrer);
</script>
PHP での同じことは次のようになります。
<?php echo $_SERVER["HTTP_REFERER"]; ?>
Referer と user-agent はリクエスト ヘッダーであり、レスポンス ヘッダーではありません。
つまり、それらはブラウザーまたは ajax 呼び出し (値を変更できます) によって送信され、HTTP 応答を取得する前に決定されます。
したがって、基本的には HTTP ヘッダーではなく、ブラウザの設定を求めています。
document.referer と navigator.userAgent から取得する値は、実際のヘッダーではなく、ブラウザーの設定である可能性があります。
Google はサーバー側で何らかのデータを取得すると思います。Google アナリティクス コードを含むページがブラウザに読み込まれると、ブラウザは Google のサーバーにリクエストを送信します。Google は、その方法でデータを取得することも、ページに埋め込まれた JavaScript を介して取得することもできます。