Обновление 2014-июнь-27 :
RFC 7231, Протокол передачи гипертекста (HTTP / 1.1): семантика и содержание , опубликовано в качестве ПРЕДЛАГАЕМОГО СТАНДАРТА. Из Журнала изменений :
Синтаксис поля заголовка Location был изменен, чтобы разрешить все
Ссылки на URI, включая относительные ссылки и фрагменты, а также
с некоторыми уточнениями относительно того, когда использование фрагментов не будет
подходящее. (Раздел 7.1.2)
Важные моменты из Раздел 7.1.2. Местоположение
Если значение Location, указанное в ответе 3xx (Redirection),
не иметь фрагментный компонент, пользовательский агент ДОЛЖЕН обрабатывать
перенаправление, как будто значение наследует фрагментный фрагмент URI
ссылка, используемая для генерации цели запроса (т.е. перенаправление
наследует исходный фрагмент ссылки, если есть).
Например,
GET-запрос, сгенерированный для ссылки URI
«http://www.example.org/~tim" может привести к 303 (см. Другие)
ответ, содержащий поле заголовка:
Location: /People.html#tim
, который предполагает, что пользовательский агент перенаправляет на
«http://www.example.org/People.html#tim"
Аналогично, запрос GET, сгенерированный для ссылки URI
«http://www.example.org/index.html#larry" может привести к 301 (перенесено
Постоянно) ответ, содержащий поле заголовка:
Location: http://www.example.net/index.html
, который предполагает, что пользовательский агент перенаправляет на
"http://www.example.net/index.html#larry", с сохранением оригинала
идентификатор фрагмента.
Это должно четко ответить на ваши вопросы.
Обновление КОНЕЦ
это открытая (не указана) проблема с текущей спецификацией HTTP . он рассматривается в двух выпусках рабочей группы IETF httpbis :
# 6 разрешает фрагменты в заголовке Location
. # 43 говорит это:
Я только что проверил это в разных браузерах.
- Firefox и Safari используют фрагмент в заголовке местоположения.
- Opera использует фрагмент из исходного URI, если он присутствует, в противном случае фрагмент из местоположения перенаправления
- IE (8) игнорирует фрагмент в URI местоположения, поэтому при его использовании будет использоваться фрагмент из исходного URI
Предложение:
"Примечание: поведение, когда необходимо объединить идентификаторы фрагментов из исходного URI и перенаправления, не определено; текущие агенты пользователя действительно различаются в отношении того, какой фрагмент имеет приоритет."
[...]
Похоже, что IE8 действительно использует idenfitier фрагмента из Location
(поведение, которое я видел, может быть ограничено localhost).
Таким образом, мы, похоже, имеем согласованное поведение для Safari / IE / Firefox / Chrome (только что протестировано) в том, что используется фрагмент из заголовка Location независимо от того, какой был исходный URI.
Поэтому я изменяю свое предложение на документ , что как ожидаемое поведение.
это приводит к большей совместимости с браузерами и будущему (потому что эта проблема в конечном итоге станет стандартизированным) ответом на ваш вопрос:
A: фрагменты исходных URL-адресов отбрасываются.
B: фрагменты из заголовка Location
принимаются.