重复的HTTP响应头可以接受吗?
我还没有find任何标准是否允许重复的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”一样?
谢谢。
苏
这里提供的HTTP RFC2616说:
当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的多个消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序
因此,如果整个字段值被定义为一个以逗号分隔的值列表,那么多个具有相同名称的头是可以的(www-authenticate就是这种情况)。
caching控制logging在这里: http : //www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9像这样:
Cache-Control = "Cache-Control" ":" 1#cache-directive
#1cache-directive
语法定义了至less一个cache-directive元素的列表(参见#values的正式定义: Notational Conventions和Generic Grammar )
所以,是的,
Cache-Control: no-cache, no-store
相当于(顺序很重要)
Cache-Control: no-cache Cache-Control: no-store