web-dev-qa-db-ja.com

JavaScriptを介してHTTPリクエストヘッダーフィールドにアクセスするにはどうすればよいですか?

クライアント側のJavaScript内で、主にRefererとUser-AgentのHTTPリクエストヘッダーフィールドをキャプチャします。どうすればそれらにアクセスできますか?


Googleアナリティクスは、JavaScriptを使用してページに埋め込んだデータを取得するので、間違いなく可能です。

関連:
JavaScriptでWebページのHTTPヘッダーにアクセス

49
dacracot

リファラーとユーザーエージェントにアクセスする場合、クライアント側のJavascriptで使用できますが、ヘッダーに直接アクセスすることはできません。

リファラーを取得するには、 document.referrer
ユーザーエージェントにアクセスするには、 navigator.userAgent

他の人が示したように、HTTPヘッダーは使用できませんが、Javascriptを介して使用できるリファラーとユーザーエージェントについて具体的に尋ねました。

66
Grant Wagner

ほとんどの場合、クライアント側のJavaScriptはhttpリクエストの受信側にないため、読み取るヘッダーはありません。最も一般的には、JavaScriptはhttp応答の結果です。応答を生成したhttpリクエストの値を取得しようとしている場合、生成するJavaScriptにそれらの値を埋め込むサーバー側コードを記述する必要があります。

サーバー側のコードでクライアント側のコードを生成するのは少し難しいので、それが必要なことを確認してください。たとえば、ユーザーエージェント情報が必要な場合は、JavaScriptがブラウザーの検出に提供するさまざまな値を取得するのに十分である可能性があります。 navigator.appNameおよびnavigator.appVersionから始めます。

9
bmb

これは、親ではなくロードされたドキュメントのプロパティであるため、Javascriptからアクセスできます。

以下に簡単な例を示します。

<script type="text/javascript">
document.write(document.referrer);
</script>

PHP=の同じものは:

<?php echo $_SERVER["HTTP_REFERER"]; ?>
6
Tommy Lacroix

Refererとuser-agentは、応答ヘッダーではなく要求ヘッダーです。

つまり、それらはブラウザーまたはajax呼び出し(値を変更できます)によって送信され、HTTP応答を取得する前に決定されます。

したがって、基本的にはHTTPヘッダーではなく、ブラウザー設定を要求しています。

Document.refererおよびnavigator.userAgentから取得する値は、実際のヘッダーではなく、ブラウザーの設定である場合があります。

1
Li-chih Wu

Googleがsomeデータサーバー側をつかむことを想像します。GoogleAnalyticsコードを含むブラウザーにページが読み込まれると、ブラウザーはGoogleのサーバーにリクエストを送信します。 Googleは、その方法でデータを取得できるだけでなく、ページに埋め込まれたJavaScriptを通じてもデータを取得できます。

0
Jason Bunting