我还没有找到关于标准是否允许重复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
Run Code Online (Sandbox Code Playgroud)
请注意,有两个Cache-Control
标头具有不同的值.浏览器是否总是将它们视为"Cache-Control:no-cache,no-store"?
Sim*_*ier 141
这里提供的HTTP RFC2616 说:
当且仅当该头字段的整个字段值被定义为以逗号分隔的列表[即,#(值)]时,具有相同字段名的多个消息头字段可以存在于消息中.必须可以将多个头字段组合成一个"字段名:字段 - 值"对,而不改变消息的语义,方法是将每个后续字段值附加到第一个字段值,每个字段值用逗号分隔.因此,接收具有相同字段名称的头字段的顺序对于组合字段值的解释是重要的,因此代理不得在转发消息时改变这些字段值的顺序.
因此,如果将整个字段值定义为以逗号分隔的值列表,则具有相同名称的多个标头即可(www-authenticate就是这种情况).
缓存控制在此处记录:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9,如下所示:
Cache-Control = "Cache-Control" ":" 1#cache-directive
Run Code Online (Sandbox Code Playgroud)
该#1cache-directive
语法定义至少一个缓存指令元素列表(在这里看到#values的正式定义:符号约定和一般语法)
所以,是的,
Cache-Control: no-cache, no-store
Run Code Online (Sandbox Code Playgroud)
相当于(顺序很重要)
Cache-Control: no-cache
Cache-Control: no-store
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35276 次 |
最近记录: |