标题的顺序是
是否有意义A: 1
B: 2
VS
B:2
A:1
我试图找出是否可以使用字典存储标题列表,或者是否需要某种列表或有序字典。
答案 0 :(得分:64)
不,对于名称不同的标题无关紧要。请参阅RFC 2616,第4.2节:
具有不同字段名称的标题字段的顺序 收到的并不重要。但是,发送是“好习惯” 首先是general-header字段,然后是request-header或response- 标题字段,以实体标题字段结尾。
但是,对于具有相同名称的多个标题,这很重要:
具有相同字段名称的多个消息头字段可以是 当且仅当整个字段值出现在消息中时出现 标题字段被定义为以逗号分隔的列表[即,#(值)]。 必须可以将多个标题字段合并为一个 “field-name:field-value”对,不改变语义 消息,通过将每个后续字段值附加到第一个,每个 用逗号分隔。头字段具有相同的顺序 因此收到字段名称是重要的 解释组合字段值,因此代理不得 转发邮件时更改这些字段值的顺序。
答案 1 :(得分:7)
标题的顺序无关紧要。可能存在HTTP标准的“较弱”实现,其中排序确实很重要,但通常不应该这样。
以下是描述HTTP标头的链接:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
答案 2 :(得分:2)
HTTP标头彼此独立,您可以使用字典存储它们,而不必担心它们的顺序。
答案 3 :(得分:1)
为同一个Cookie指定set-cookie
几次也可能很重要:
"Set-Cookie: COOKIE1=VALUE1; ...
"Set-Cookie: COOKIE1=VALUE2; ...
在这种情况下,COOKIE1
将设置为VALUE2
,如果订单已更改:
"Set-Cookie: COOKIE1=VALUE2; ...
"Set-Cookie: COOKIE1=VALUE1; ...
COOKIE1
将设置为VALUE1
答案 4 :(得分:0)
RFC 7230, section 3.2.2: Field Order具体解决了这个问题。这里的引用来自规范的该部分,重点是我补充的:
接收具有不同字段名称的标题字段的顺序不重要。
为了表现出色,还附有关于良好实践的注释,以证明这一点:
但是,好的做法是首先发送包含控制数据的头字段,例如“ Host on request”和“ Date on response”,以便实现者可以决定何时不尽早处理消息。
在某些情况下,允许一条消息包含多个具有相同名称的头字段。在这种情况下,顺序很重要。
接收者可以通过将每个随后的字段值按顺序附加到合并的字段值上,而无需更改消息的语义,接收者可以将具有相同字段名的多个头字段组合为一对“字段名:字段值”,以逗号分隔。因此,接收具有相同字段名称的字段 的顺序对于合并字段值的解释重要。