Будет ли перенаправление 302 поддерживать строку реферера?

StackOverflow https://stackoverflow.com/questions/2158283

Вопрос

Мне нужно перенаправить пользователя с одной страницы на другую, но мне нужно сохранить исходную строку ссылки.Так, например, если они начинают с http://www.othersite.com/pageA.jsp, нажмите на ссылку , которая приведет их к http://www.mysite.com/pageB.jsp, который затем выполняет перенаправление 302 на http://www.mysite.com/pageC.jsp, Мне нужно , чтобы строка referer содержала "http://www.othersite.com/pageA.jsp"

Является ли это нормальным поведением для перенаправления 302?Или мой первоначальный реферер был бы отброшен в пользу "http://www.mysite.com/pageB.jsp" ?Это было бы нежелательно.

Я не знаю, имеет ли это какое-либо значение, но я работаю в JSP и использую response.sendRedirect() для выполнения перенаправления 302.

Я должен упомянуть, что я провел эксперимент с этим, и, похоже, он сохранил исходную строку referer ("http://www.othersite.com/pageA.jsp") но я просто хотел убедиться, что это нормальное поведение по умолчанию, а не что-то странное с моей стороны.

Спасибо вам за вашу помощь.

ОТРЕДАКТИРОВАНО Для ДОБАВЛЕНИЯ :

Хотя в настоящее время я использую перенаправление 302, я, вероятно, мог бы вместо этого использовать перенаправление 301.Знаете ли вы, является ли поведение для 301 перенаправления более надежным?

Это было полезно?

Решение

Короткий ответ: это не указано в соответствующем RFC 2616 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36 либо для заголовка Refererer, либо для кода состояния 302.

Лучше всего провести тест с несколькими браузерами и посмотреть, есть ли согласованное поведение.

Для полного ремня и подтяжек закодируйте оригинального реферера в URL перенаправления, чтобы вы могли гарантировать его получение.

Другие советы

Я не знаю насчет 302, но сегодня я протестировал 301 в некоторых браузерах, вот результаты:

СЦЕНАРИЙ:пользователь нажимает ссылку на DomainX, которая указывает на DomainA.DomainA делает 301 перенаправление на DomainB.

  • IE8 referer при посадке на DomainB это:DomainX (даже при использовании InPrivate browsing и даже когда пользователь открывает ссылку в новой вкладке)
  • Сафари4 referer при посадке на DomainB это:DomainX (даже когда пользователь открывает ссылку в новой вкладке)
  • ФF3.6.10 referer при посадке на DomainB это:DomainX (даже когда пользователь открывает ссылку в новой вкладке)
  • Хром5 referer при посадке на DomainB это:Доменx (если не пользователь открывает ссылки в новой вкладке)
  • Хроме26 referer при посадке на DomainB это:DomainX (даже когда пользователь открывает ссылки в новой вкладке)

Хороший вопрос.В этом случае отправка реферера полностью зависит от браузера (поскольку браузеру предлагается сделать еще один запрос к новому ресурсу).

RFC 2616 хранит молчание по этому вопросу:

Запрошенный ресурс временно находится под другим URI.Поскольку перенаправление может быть изменено при случае, клиент ДОЛЖЕН продолжать использовать Request-URI для будущих запросов.Этот ответ кэшируется только в том случае, если он указан полем заголовка Cache-Control или Expires.

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

Обходной путь

Если вы можете, почему бы не добавить ?override_referer=<old_url> укажите URL, на который вы перенаправляете, и проанализируйте это значение вместо HTTP_REFERER .

Таким образом, вы можете быть уверены, что всегда получите правильный результат, и вы ничего не теряете в безопасности:Реферер может быть подделан в любом случае.

У меня была противоположная проблема :Я хотел, чтобы реферер был "PageB", но ни одна из текущих процедур браузера не выполнялась таким образом...

Итак, я попробовал с перенаправлением HTML на PageB (вместо перенаправления 301 или 302) :

<meta http-equiv="refresh" content="0; url=pageC.jsp" />

И результат был удивительным :

  • Реферер - это страница B с Chrome
  • Refererer ПУСТ в FireFox и IE !

Надеюсь, это может помочь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top