Допустимы ли повторяющиеся заголовки ответов HTTP?
Я не нашел никаких спецификаций о том, разрешены ли повторяющиеся заголовки ответов HTTP стандартом, но мне нужно знать, вызовет ли это проблемы совместимости.
скажем, у меня есть заголовок ответ такой:
HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5
Cache-Control: no-cache
Cache-Control: no-store
Location: http://localhost:9876/foo.bar
Content-Language: en-US
Content-Length: 0
Date: Mon, 06 Dec 2010 21:18:26 GMT
обратите внимание, что есть два Cache-Control
заголовки с разными значениями. Браузеры всегда относятся к ним так, как будто они написаны как "Cache-Control: no-cache, no-store"?
1 ответ:
HTTP RFC2616 доступно здесь говорит:
может присутствовать несколько полей заголовка сообщения с одним и тем же именем Поля в сообщении, если и только если все поле-значение для этого заголовка поле определяется как разделенный запятыми список [т. е., #(значения)]. Он должен можно объединить несколько полей заголовка в одну пара "поле-Имя: поле-Значение", без изменения семантики сообщение, добавляя каждое последующее значение поля к первому, каждый через запятую. Порядок, в котором поля заголовка с тем же поле-Имя получено, следовательно, являются существенными для толкования объединенного значения поля, и, таким образом, прокси-сервер не должен изменять порядок значений этих полей при пересылке сообщения
Итак, несколько заголовков с одинаковым именем в порядке (www-authenticate-это такой случай), если все значение поля определяется как список значений, разделенных запятыми.
Cache-control is документально здесь:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 Вот так:
Cache-Control = "Cache-Control" ":" 1#cache-directive
The
#1cache-directive
синтаксис определяет список по крайней мере одного элемента директивы кэша (см. здесь формальное определение #values: Нотационные соглашения и общая грамматика)да,
Cache-Control: no-cache, no-store
эквивалентно (порядок важен)
Cache-Control: no-cache Cache-Control: no-store