En théorie, les navigateurs ne transmettent pas les informations des référents de HTTPS aux sites HTTP. Et d'après mon expérience, cela a toujours été vrai. Mais je viens de trouver une exception, et je veux comprendre pourquoi cela fonctionne pour que je puisse également l'utiliser.
Recherchez «quel est mon référent» sur https://www.google.ca/
ex: https://www.google.ca/search?q=what+is+my+referer
Il y a quelques sites qui montreront un référent. Ils semblent tous "fonctionner" alors qu'ils ne devraient pas. Par exemple, cliquez sur celui www.whatismyreferer.com. Je reçois:
Your referer:
https://www.google.ca/
Notez que parfois, rarement, je reçois "pas de référent" comme résultat. Revenez en arrière et cliquez à nouveau sur le lien et cela "fonctionnera" la prochaine fois.
Cela ne devrait pas arriver. www.whatismyreferer.com est un site non HTTPS. L'en-tête du référent ne doit pas être transmis, mais il l'est.
Que se passe-t-il ici, et comment puis-je faire la même chose de mon site HTTPS aux sites HTTP auxquels je crée un lien?
la source
Réponses:
Il semble que cela soit dû à un nouvel en-
<meta>
tête que Google utilise:Spécification: https://w3c.github.io/webappsec-referrer-policy/
Il n'est actuellement entièrement pris en charge que par quelques navigateurs , ce n'est donc pas une solution complète, mais certainement un début!
la source
C'est le comportement standard.
https://tools.ietf.org/html/rfc2616#section-15.1.3 dit
Les clients NE DEVRAIENT PAS inclure un champ d'en-tête Referer dans une demande HTTP (non sécurisée) si la page de référence a été transférée avec un protocole sécurisé.
donc si votre client le fait, cela viole la norme.
là encore, google EST la norme, et ils peuvent faire ce qu'ils veulent :-)
la source
Cela semble être quelque chose que fait le javascript sur la page Google. Je ne le vois pas dans firefox avec noscript activé et arrête de le voir dans Chrome sur Windows si je désactive javascript. Je ne sais pas quoi précisément car je n'ai pas creusé plus profondément que ça.
la source
<meta>
Le nom d'attribut de l'étiquette a de nouvelles règles de référent, le référent contrôlant le contenu de l'en-tête HTTP Referer HTTP attaché à toute demande envoyée à partir de ce document.Pour plus d'informations, veuillez vérifier ici: Politique de parrainage RFC
la source
C'est parce que lorsque vous cliquez sur le lien, vous êtes redirigé de https://www.google .... vers http://www.google ... puis vous êtes redirigé vers www.whatismyreferer.com
Et comme vous l'avez dit, entre le site http, le référent est transmis.
Vous pouvez le vérifier avec une extension Firefox
la source