HTTP响应中头部的顺序是否重要?

标题的顺序是否有意义?

A: 1 B: 2 

VS

 B:2 A:1 

我想弄清楚,如果我可以使用字典来存储标题列表,或者如果它需要某种列表或有序的字典。

不,对于名称不同的标题无关紧要。 请参阅RFC 2616 ,第4.2节:

收到不同字段名称的字段顺序不重要。 但是,首先发送通用报头字段,然后是请求报头或响应报头字段,并以实体报头字段结束,这是“良好做法”。

但是,重要的是多个标题名称相同:

当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的多个消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头部字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序。

标题的顺序应该没有关系。 HTTP标准可能存在“较弱”的实现,在这种实现中sorting很重要,但不应该一般。

这是一个描述HTTP头的链接:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2

HTTP标头是相互独立的,您可以使用字典来存储它们,而不用担心它们的顺序。

对同一个cookie指定set-cookie几次也是很重要的:

 "Set-Cookie: COOKIE1=VALUE1; ... "Set-Cookie: COOKIE1=VALUE2; ... 

在这种情况下, COOKIE1将被设置为VALUE2 ,如果订单被更改:

 "Set-Cookie: COOKIE1=VALUE2; ... "Set-Cookie: COOKIE1=VALUE1; ... 

COOKIE1将被设置为VALUE1