Обновление 2014-Jun-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 », сохраняя исходный идентификатор фрагмента.
Это должно четко ответить на ваши вопросы.
Обновить END
это открытая (не указанная) проблема с текущей спецификацией HTTP . он рассматривается в двух выпусках рабочей группы IETF httpbis :
# 6 позволяет фрагменты в Location
заголовке. # 43 говорит это:
Я только что проверил это с различными браузерами.
- Firefox и Safari используют фрагмент в заголовке местоположения.
- Opera использует фрагмент из исходного URI, если он присутствует, в противном случае фрагмент из местоположения перенаправления
- IE (8) игнорирует фрагмент в URI местоположения, поэтому будет использовать фрагмент из URI источника, когда он присутствует
Предложение:
«Примечание: поведение, когда необходимо объединить идентификаторы фрагментов из исходного URI и перенаправления, не определено; текущие пользовательские агенты действительно различаются в отношении того, какой фрагмент имеет приоритет».
[...]
Похоже, что IE8 действительно использует фрагмент idenfitier from Location
(поведение, которое я видел, может быть ограничено localhost).
Таким образом, похоже, что у Safari / IE / Firefox / Chrome (только что протестированный) есть согласованное поведение, когда используется фрагмент из заголовка Location независимо от того, какой был исходный URI.
Поэтому я изменяю свое предложение, чтобы задокументировать это как ожидаемое поведение.
это приводит к тому, что браузер будет наиболее совместимым и пригодным для будущего (поскольку эта проблема в конечном итоге будет стандартизирована), ответ на ваш вопрос:
A: фрагменты из оригинальных URL-адресов отбрасываются.
B: фрагменты из Location
заголовка соблюдаются.