Остановить ссылку от отправки реферала по назначению - PullRequest
50 голосов
/ 17 февраля 2011

У меня есть страница, на которой я не хочу, чтобы исходящие ссылки отправляли реферера, поэтому сайт назначения не знает, откуда они пришли.

Я предполагаю, что это невозможно, но я просто хочу убедиться, что не было никакой скрытой магии javascript, которая могла бы это сделать и которая работала бы с некоторыми (если не с большинством) браузерами.

Может быть, какой-нибудь умный код статуса HTTP, перенаправляющий кунг-фу?

Что-то вроде этого было бы идеально

<a href="example.com" send_referrer="false">link</a>

Ответы [ 6 ]

69 голосов
/ 27 сентября 2011

Я искал то же самое, и, похоже, это будет особенность HTML5 .

Тег, который вы ищете, rel="noreferrer".

Он уже реализован в Webkit (Chrome и т. Д.) , , а также в Firefox , но ваш пробег может отличаться.

44 голосов
/ 27 сентября 2015

Для тех, кто посещает в 2015 году и далее, теперь есть подходящее решение, получающее поддержку.

Спецификация HTTP Referrer Policy позволяет контролировать отправку реферера для ссылок и подресурсов (изображений, сценариев, таблиц стилей и т. Д.), И на данный момент это поддерживается в Firefox, Chrome, Opera и Desktop Safari 11.1.

Edge, IE11, iOS Safari и настольные версии Safari до 11.1 поддерживают более старую версию спецификации с never, always, origin и default в качестве параметров.

В соответствии со спецификацией , они могут поддерживаться указанием нескольких значений политики. Нераспознанные будут проигнорированы, а последний признанный победит.

<meta name="referrer" content="never">
<meta name="referrer" content="no-referrer">

Кроме того, если вы хотите применить его к тегам audio, img, link, script или video, для которых требуется атрибут crossorigin, предпочитайте crossorigin="anonymous", где это возможно, чтобы будет использоваться только абсолютный минимум (заголовок Origin).

(Вы не можете избавиться от заголовка Origin при использовании CORS, потому что удаленные сайты должны знать, какой домен делает запрос, чтобы разрешить или отклонить его.)

31 голосов
/ 03 июня 2013

HTML 5 включает rel="noreferrer", что поддерживается во всех основных браузерах .Таким образом, для этих браузеров вы можете просто написать:

<a href="example.com" rel="noreferrer">link</a>

Для других браузеров также имеется прокладка: https://github.com/knu/noreferrer

9 голосов
/ 11 января 2013

Bigmack находится на правильном пути, но изменение местоположения javascript все еще отправляет реферера в firefox.Использование метаобновления, кажется, решает проблему для меня.

<a href='data:text/html;charset=utf-8, <html><meta http-equiv="refresh" content="0;URL=&#39;http://google.com/&#39;"></html>'>Link</a>
4 голосов
/ 09 августа 2012

Я тоже пытался это понять.

Решение, о котором я подумал, состояло в том, чтобы использовать URL-адрес данных, чтобы скрыть фактическую страницу, с которой я пришел.

<a href='data:text/html;charset=utf-8, <html><script>window.location = "http://google.ca";</script></html>'>Link</a>

Эта ссылка открывает страницу, которая содержит только javascript для загрузки другой страницы. В моем тестировании реферер не дается до конечного пункта назначения. Я не знаю, что он может отправить в качестве реферера, если он попытался в любом случае, может быть, URL-адрес данных? который не дал бы, откуда ты пришел.

Это работает в Chrome. Chrome - моя единственная забота о моей текущей проблеме, но для браузеров, которые не любят javascript на страницах, которые являются URL-адресами данных. Вы могли бы попробовать метаобновление.

1 голос
/ 23 февраля 2017

В дополнение к уже предоставленной информации.Здесь можно найти больше информации по теме: https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer

Специально позволяет вам отправлять или не отправлять реферальную информацию, если вам нужны разные правила для запросов одного и того же происхождения или запросов из разных источников.

Что следует учитывать в зависимости от конкретного варианта использования.т. е. если вы загружаете images / css / javascript со сторонних веб-сайтов, вы можете не указывать URL-адрес, с которого вы это делаете, и, следовательно, использовать опцию no-referrer.Принимая во внимание, что если вы ссылаетесь на другие сайты со своего собственного сайта, вы можете захотеть, чтобы они знали, что вы отправляете им трафик.Всегда продумывайте последствия этого с обеих сторон.Если в этих двух областях есть конфликт, то есть другие варианты, такие как добавление параметров отслеживания UTM в конец URL, которые могут пригодиться для некоторых людей.Полная информация здесь: https://www.contradodigital.com/2014/06/03/importance-utm-tracking-parameters-social-media/

...