Назад | Перейти на главную страницу

В некоторых случаях Referer передается с HTTPS на HTTP… Как?

Теоретически браузеры не передают информацию о реферере с 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