Question

Je souhaite capturer les champs d'en-tête de la requête HTTP, principalement les éléments Referer et User-Agent, dans le code JavaScript côté client. Comment puis-je y accéder?

Google Analytics parvient à obtenir les données via JavaScript qu’elles vous ont incorporées dans vos pages, ce qui est tout à fait possible.

  

Connexes:
   Accéder aux en-têtes HTTP de la page Web en JavaScript

Était-ce utile?

La solution

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

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 posé des questions sur le référant et l'agent utilisateur, qui sont disponibles via Javascript.

Autres conseils

Presque par définition, le code JavaScript côté client n’est pas le destinataire d’une demande http, il n’a donc aucun en-tête à lire. 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 ayant généré votre réponse, vous devrez écrire un code côté serveur pour intégrer ces valeurs dans le code JavaScript que vous produisez.

Il est un peu délicat de demander au code côté serveur de générer le code côté client. Assurez-vous donc que c'est bien ce dont vous avez besoin. Par exemple, si vous souhaitez obtenir les informations sur l'agent utilisateur, vous jugerez peut-être suffisant d'obtenir les différentes valeurs fournies par JavaScript pour la détection du navigateur. Commencez par navigator.appName et navigator.appVersion.

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"]; ?>

Le référent et l'agent utilisateur sont des en-têtes de requête et non des en-têtes de réponse.

Cela signifie qu'ils sont envoyés par le navigateur ou par votre appel ajax (dont vous pouvez modifier la valeur), et ils sont définis 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.

J'imagine que Google s'empare du côté serveur de données. N'oubliez pas que, lorsqu'une page se charge 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.

var ref = Request.ServerVariables("HTTP_REFERER");

Saisissez entre guillemets tout autre nom de variable de serveur souhaité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top