Что такое HTTP Referer, если ссылка щелкнута в ‹iframe›?

Предположим, у меня есть веб-страница, расположенная по адресу http://www.website.com, и в ней есть <iframe>. Так:

<html>
 <head>...</head>
 <body>
  ...
  <iframe src="http://www.washington.edu">
  ...
 </body>
</html>

Теперь предположим, что кто-то заходит на сайт www.website.com и щелкает ссылку в самом iframe (эта ссылка находится на сайте www.washington.edu).

Мой вопрос: что такое HTTP Referer в этом случае?

Это http://www.website.com (страница, на которой размещен iframe) или http://www.washington.edu (страница, на которой была нажата ссылка)?


person bodacydo    schedule 11.12.2011    source источник
comment
Дубликат stackoverflow.com/questions/2324202/. Интересно, однако, что IE6 всегда будет сообщать о родительской странице iframe как о реферере.   -  person dash    schedule 12.12.2011
comment
Хорошо, что IE6 больше не поддерживается.   -  person bodacydo    schedule 12.12.2011
comment
Попробуйте поработать в крупной организации государственного сектора или в каких-нибудь крупных «голубых фишках» в Великобритании :-(   -  person dash    schedule 12.12.2011
comment
О да, и включение режимов конфиденциальности в браузерах полностью отключит эту функцию.   -  person dash    schedule 12.12.2011
comment
Пожалуйста, подумайте о том, чтобы переключить одобрение на мой ответ, @bodacydo. См. Обоснование в обсуждении ниже ответа Маскратта ниже.   -  person Greg Dubicki    schedule 21.08.2015


Ответы (2)


Это зависит от браузера.

Firefox и Safari сообщат о реферере как http://www.website.com, в то время как некоторые версии Internet Explorer будут отображать http://www.washington.edu в качестве реферера.

ОБНОВЛЕНИЕ 2015-04: при тестировании последних версий вышеперечисленного все они возвращали http://www.washington.edu.

person muskratt    schedule 13.12.2011
comment
Сэр, я думаю, вы имеете в виду наоборот. Я уверен. Я все равно принял твой ответ. Спасибо. - person bodacydo; 07.02.2012
comment
@GregDubicki Я не уверен, что это должно быть стороннее редактирование, поскольку оно, по сути, полностью меняет то, что говорил ответ ОП. Я думаю, что лучше остаться в качестве комментария. Таким образом, я отклонил ваше предложение по редактированию. Если вы не согласны, не стесняйтесь спрашивать об этом на Meta SO! - person TylerH; 20.08.2015
comment
Извините, я думаю, что, возможно, я перестарался, потому что часть UPDATE теперь верна, но предыдущее предложение неверно. Пожалуйста, сравните его с stackoverflow.com/questions/2324202/ и stackoverflow.com/a/2324226/2693875 и stackoverflow.com/a/2822853/2693875. - person Greg Dubicki; 21.08.2015
comment
Хорошо @TylerH: meta.stackoverflow.com/questions/303023/ - person Greg Dubicki; 21.08.2015
comment
Я добавил свой собственный ответ, как это было предложено в Meta. Это должно быть правильно, и я дополнительно добавил некоторые из моих последних находок по этому вопросу. - person Greg Dubicki; 21.08.2015
comment
Что делать, если у iframe нет src? Тогда реферер будет URL-адресом родительского объекта iframe или вообще не будет заголовка реферера? - person nrek; 29.06.2016

Текущие браузеры

По состоянию на август 2015 года все основные браузеры (Safari, Chrome, Firefox) должны устанавливать для HTTP-заголовка Referer значение http://www.washington.edu в данном случае.


Но я рекомендую вам проверить, как ведут себя определенные версии браузеров в конкретных случаях, если ваше приложение сильно зависит от значения Referer.

Я пишу это, потому что, например, я обнаружил, что Safari 8 в настоящее время делает запросы с неправильным Referer для JavaScript, загруженного в iframe, возможно, если этот JavaScript ранее запрашивался с другим Referer. Эта ошибка похожа на эту конкретную, которая была закрыта. в Chromium только в 2014 году. (Кстати, я уже сообщил об этом Apple.)

Старые браузеры

Исторически сложилось так, что Internet Explorer 6 показывал поведение, отличное от описанного выше: он устанавливал для заголовка HTTP Referer значение http://www.website.com.

person Greg Dubicki    schedule 21.08.2015