2017-09-05 12 views
0

Avant de lire ma question, veuillez noter les informations suivantes: Je suis conscient que HTTP_REFERER peut être falsifié ou désactivé dans le navigateur client. Je ne me soucie pas de mon cas d'utilisation, et le navigateur que je suis en train de tester passe définitivement les informations de référence.Emplacement: l'en-tête ne semble pas défini HTTP_REFERER

Ma question est la suivante:

Je crée un fichier appelé page1.php:

<?php 
header("Location: page2.php"); 

créer un second fichier appelé page2.php:

<?php 
echo "Referred by \"" . $_SERVER['HTTP_REFERER'] . "\""; 

puis de mon client navigateur que j'appelle:

http://test-me.co/page1.php

et je me attends à la sortie résultant de page2.php être:

Référé par "http://test-me.co/page1.php"

mais il affiche aucune information referer comme suit:

Référé par ""

Quelqu'un peut-il m'expliquer pourquoi le referer est vide?

merci beaucoup!

Répondre

3

Le referer contient la dernière page affichée par l'utilisateur. Si vous entrez l'URL example.com/a.html dans votre barre d'adresse qui redirige immédiatement vers /b.html, alors vous n'avez jamais vraiment visité a.html; et avant cela, il n'y a pas de page "d'où" vient.

Pour voir tout referer après une redirection de la page de redirection doit avoir été lié de quelque part, à savoir

a.html --link--> b.html --redirect--> c.html 

Puis, en c.html vous verriez a.html comme referer. Si vous démarrez cette chaîne au b.html, il n'y a pas de référant.