72 votes

Comment accéder aux champs d'en-tête de requête HTTP via JavaScript?

Je souhaite capturer les champs d'en-tête de la requête HTTP, principalement le référent et l'agent utilisateur, au sein de mon code JavaScript côté client. Comment puis-je y accéder?


Google Analytics parvient à obtenir les données via JavaScript que vous avez intégrées dans vos pages, ce qui est tout à fait possible.

Apparenté, relié, connexe:
Accéder aux en-têtes HTTP en Javascript?

82voto

Grant Wagner Points 14085

Si vous souhaitez accéder au référent et de l'agent utilisateur, ceux-ci sont disponibles à côté client en Javascript, mais pas par l'accès aux en-têtes directement.

Pour récupérer le référent, utilisez document.referrer.
Pour accéder à l'agent utilisateur, utilisez navigator.userAgent.

Comme d'autres l'ont indiqué, les en-têtes HTTP ne sont pas disponibles, mais vous avez spécifiquement demandé sur le referer et de l'agent utilisateur, qui sont disponibles via Javascript.

16voto

bmb Points 2995

Presque par définition, le JavaScript côté client n'est pas à l'extrémité de réception d'une requête http, il n'a pas d'en-têtes de lecture. Le plus souvent, votre JavaScript est le résultat d'une réponse http. Si vous essayez d'obtenir les valeurs de la requête http qui a généré de votre réponse, vous aurez à écrire le côté serveur du code pour intégrer ces valeurs dans le code JavaScript que vous produisez.

Il devient un peu difficile d'avoir le code côté serveur générer du code côté client, assurez-vous donc qu'est ce que vous avez besoin. Par exemple, si vous souhaitez que l'Utilisateur-informations de l'agent, vous trouverez peut-être suffisant pour obtenir les différentes valeurs que JavaScript fournit pour la détection du navigateur. Démarrer avec le navigateur.appName et le navigateur.appVersion.

7voto

Tommy Lacroix Points 703

Ceci est accessible via Javascript car c'est une propriété du document chargé, pas de son parent.

Voici un exemple rapide:

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

La même chose en PHP serait:

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

1voto

Li-chih Wu Points 548

Le référant et l'agent utilisateur sont des en-têtes de requête, pas des en-têtes de réponse

Cela signifie qu'ils sont envoyés par le navigateur ou votre appel ajax (dont vous pouvez modifier la valeur), et ils sont décidés avant que vous n'ayez une réponse HTTP.

Donc, fondamentalement, vous ne demandez pas un en-tête HTTP, mais un paramètre de navigateur.

La valeur que vous obtenez de document.referer et navigator.userAgent n'est peut-être pas l'en-tête, mais un paramètre de navigateur.

0voto

Jason Bunting Points 27534

J'imagine que Google s'empare de certaines données côté serveur. Rappelez-vous que lorsqu'une page est chargée dans votre navigateur contenant du code Google Analytics, votre navigateur envoie une requête aux serveurs de Google. Google peut obtenir des données de cette manière, ainsi que via le code JavaScript intégré à la page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X