В HTTP « Referer » (ошибочное написание Referrer [1] ) — это необязательное поле заголовка HTTP , которое идентифицирует адрес веб- страницы (т. е. URI или IRI ), с которой был запрошен ресурс. Проверив реферер, сервер, предоставляющий новую веб-страницу, может увидеть, откуда произошел запрос.
В наиболее распространенной ситуации это означает, что когда пользователь щелкает гиперссылку в веб -браузере , в результате чего браузер отправляет запрос на сервер, содержащий целевую веб-страницу, запрос может включать поле Referer, которое указывает последнюю страницу, на которой находится целевая веб-страница. пользователь был включен (тот, где он нажал на ссылку).
Веб-сайты и веб-серверы регистрируют содержимое полученного поля Referer, чтобы идентифицировать веб-страницу, с которой пользователь перешел по ссылке, в рекламных или статистических целях. [2] Это влечет за собой потерю конфиденциальности пользователя и может создать угрозу безопасности . [3] Чтобы снизить риски безопасности, браузеры постоянно сокращают объем информации, отправляемой в Referer. По состоянию на март 2021 года по умолчанию Chrome , [4] Edge на основе Chromium , Firefox , [5] Safari [6] по умолчанию отправляют только источник в запросах между источниками, удаляя все, кроме имени домена.
Ошибка в написании слова « Referer» была введена в первоначальном предложении ученого-компьютерщика Филиппа Халлама-Бейкера о включении поля заголовка «Referer» в спецификацию HTTP . [7] [8] Орфографическая ошибка была высечена в камне к моменту (май 1996 г.) ее включения в стандартный документ запроса на комментарии RFC 1945 [9] (который «отражает обычное использование протокола, называемого «HTTP/1.0»). " ' в это время); Соавтор документа Рой Филдинг заметил в марте 1995 года, что «ни один (реферер или реферер) не понимается» стандартной программой проверки орфографии Unix того периода. [10] С тех пор слово «Referer» стало широко используемым в отрасли при обсуждении HTTP-рефереров; Однако использование орфографической ошибки не является универсальным, поскольку правильное написание «реферер» используется в некоторых веб-спецификациях, таких как Referrer-Policy
заголовок HTTP или объектная модель документа . [3]
При посещении веб-страницы реферером или ссылающейся страницей является URL-адрес предыдущей веб-страницы, с которой был выполнен переход по ссылке.
В более общем смысле, реферер — это URL-адрес предыдущего элемента, который привел к этому запросу. Например, реферером изображения обычно является HTML- страница, на которой оно должно отображаться. Поле реферера — это необязательная часть HTTP-запроса, отправляемого веб-браузером на веб-сервер. [11]
Многие веб-сайты регистрируют рефереры в рамках попыток отслеживать своих пользователей . Большинство программ для анализа веб-журналов могут обрабатывать эту информацию. Поскольку информация о реферере может нарушать конфиденциальность , некоторые веб-браузеры позволяют пользователю отключать отправку информации о реферере. [12] Некоторые прокси-серверы и брандмауэры также фильтруют информацию о реферере, чтобы избежать утечки местоположения закрытых веб-сайтов. Это, в свою очередь, может вызвать проблемы: некоторые веб-серверы блокируют части своего веб-сайта для веб-браузеров, которые не отправляют правильную информацию о реферере, в попытке предотвратить глубокие ссылки или несанкционированное использование изображений ( кража полосы пропускания ). Некоторые прокси-программы имеют возможность указывать адрес верхнего уровня целевого веб-сайта в качестве реферера, что уменьшает эти проблемы, но в некоторых случаях все же может раскрыть информацию о последней посещенной пользователем веб-странице.
Многие блоги публикуют информацию о реферерах, чтобы ссылаться на людей, которые ссылаются на них, и, следовательно, расширять общение. Это, в свою очередь, привело к росту спама со стороны рефереров : рассылки фальшивой информации о реферерах с целью популяризации веб-сайта спамера.
Доступ к информации о реферере на стороне клиента можно получить с помощью document.referrer в JavaScript . [13] Это можно использовать, например, для индивидуализации веб-страницы на основе запроса поисковой системы пользователя. Однако поле реферера не всегда включает ключевые слова для поиска, например, при использовании поиска Google с HTTPS. [14]
Большинство веб-серверов ведут журналы всего трафика и записывают HTTP-реферер, отправленный веб-браузером для каждого запроса. Это вызывает ряд проблем с конфиденциальностью, и в результате был разработан ряд систем, предотвращающих отправку веб-серверам реального ссылающегося URL-адреса. Эти системы работают либо путем заполнения поля реферера, либо путем замены его неточными данными. Как правило, пакеты интернет-безопасности стирают данные реферера, а веб-серверы заменяют их ложным URL-адресом, обычно своим собственным. Это поднимает проблему реферального спама. Технические детали обоих методов довольно схожи: программные приложения действуют как прокси-сервер и манипулируют HTTP-запросами, в то время как веб-методы загружают веб-сайты внутри фреймов, заставляя веб-браузер отправлять URL-адрес реферера адреса их веб-сайта. Некоторые веб-браузеры предоставляют своим пользователям возможность отключить поля реферера в заголовке запроса. [12]
Большинство веб-браузеров не отправляют поле реферера, когда им предлагается перенаправить с помощью поля «Обновить». Сюда не входят некоторые версии Opera и многие мобильные веб-браузеры. Однако Консорциум Всемирной паутины (W3C) не рекомендует использовать этот метод перенаправления . [15]
Если доступ к веб-сайту осуществляется через HTTP Secure (HTTPS) соединение и ссылка указывает куда угодно, кроме другого безопасного места, то поле реферера не отправляется. [11]
В стандарт HTML5 добавлена поддержка атрибута/значения rel="noreferrer"
, который предписывает пользовательскому агенту не отправлять реферер. [16]
Другой метод сокрытия реферера — преобразовать исходный URL-адрес ссылки в URL-адрес на основе схемы URI данных , содержащий небольшую HTML-страницу с метаобновлением исходного URL-адреса. Когда пользователь перенаправляется со data:
страницы, исходный реферер скрыт.
В стандарте политики безопасности контента версии 1.1 представлена новая директива реферера , которая позволяет лучше контролировать поведение браузера в отношении заголовка реферера. В частности, это позволяет веб-мастеру указать браузеру вообще не блокировать реферер, показывать его только при переходе с того же источника и т. д. [17]