302 перенаправления поддержат строку ссылающегося домена?

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

Действительно ли это - нормальное поведение для 302 перенаправлений? Или мой исходный ссылающийся домен отбросить, в пользу "http://www.mysite.com/pageB.jsp"? Это не было бы желательно.

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

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

Спасибо за Вашу справку.

ОТРЕДАКТИРОВАННЫЙ ДЛЯ ДОБАВЛЕНИЯ:

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

89
задан sangfroid 29 January 2010 в 00:22
поделиться

2 ответа

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

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

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

30
ответ дан 24 November 2019 в 07:18
поделиться

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

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

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

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

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

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

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

12
ответ дан 24 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: