Теоретически браузеры не передают информацию о реферере с HTTPS на HTTP-сайты. По моему опыту, это всегда было правдой. Но я только что обнаружил исключение и хочу понять, почему это работает, чтобы я мог его использовать.
Выполните поиск по запросу "what is my referer" на https://www.google.ca/
например: https://www.google.ca/search?q=what+is+my+referer
Есть несколько сайтов, на которых будет отображаться референт. Кажется, что все они «работают», хотя не должны. Например, щелкните ссылку www.whatismyreferer.com. Я получил:
Your referer:
https://www.google.ca/
Обратите внимание, что иногда, изредка, я получаю в результате «no referer». Вернитесь и щелкните ссылку еще раз, и в следующий раз она «сработает».
Этого не должно происходить. www.whatismyreferer.com не является сайтом HTTPS. Заголовок referer не должен передаваться, но это так.
Что здесь происходит и как я могу сделать то же самое с моего HTTPS-сайта на HTTP-сайты, на которые я ссылаюсь?
Похоже, это из-за нового <meta>
заголовок, который использует Google:
<meta name="referrer" content="origin">
Технические характеристики: https://w3c.github.io/webappsec-referrer-policy/
В настоящее время только полностью поддерживается несколькими браузерами, так что это не полное решение, но, безусловно, начало!
Это стандартное поведение.
https://tools.ietf.org/html/rfc2616#section-15.1.3 говорит
Клиентам НЕ СЛЕДУЕТ включать поле заголовка Referer в (небезопасный) HTTP-запрос, если ссылающаяся страница была передана по безопасному протоколу.
поэтому, если ваш клиент делает это, это нарушает стандарт.
опять же, Google является стандартом, и они могут делать все, что захотят :-)
Кажется, это то, что делает javascript на странице Google. Я не вижу его в firefox с включенным noscript и перестаю видеть его в Chrome в Windows, если я отключу javascript. Не знаю, что конкретно, так как глубже я не копал.
<meta>
Имя атрибута метки имеет новые правила реферера, реферер контролирует содержимое HTTP-заголовка HTTP Referer, прикрепленного к любому запросу, отправляемому из этого документа.
Для получения дополнительной информации проверьте здесь: Политика реферера RFC
Это потому, что когда вы нажимаете на ссылку, вы перенаправляетесь с https://www.google.... чтобы http://www.google... тогда вы будете перенаправлены на сайт www.whatismyreferer.com
И, как вы сказали, между веб-сайтом http передается ссылка.
Вы можете проверить это с помощью Расширение Firefox