设置多个具有相同名称的HTTP标头?

dea*_*mon 49 http http-headers

据我所知,HTTP规范允许设置多个具有相同名称的HTTP头.是否有任何用例(从客户端到服务器,反之亦然)?

HTTP 1.1第4.2节:

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

如果我没有错,则不存在需要多个具有相同名称的标头的情况.

sli*_*cki 40

它常用于Set-Cookie:.许多服务器设置了多个cookie.

当然,您始终可以在一个标题中设置它们.

实际上,我认为你不能在一个标题中设置多个cookie.这是一个必要的用例.

所述饼干规范不要求,可以在一个头中的相同的方式的其他报头可以被组合(逗号分隔)组合多个cookies,但它也指出,不符合规定的语法(如Expires参数,它具有,S IN其值)仍然很常见,必须通过实现来处理.

因此,如果您ExpiresSet-Cookie标题中使用params 并且不希望所有Cookie同时到期,则可能需要使用多个标头.

  • 不,Expires具有特殊含义,就像Path,Secure,Domain等一样(参见http://www.ietf.org/rfc/rfc2109.txt).例如,查看此页面的HTTP标头,我看到:"Set-Cookie:usr = t = [redacted]; domain = .stackoverflow.com; expires = Fri,12-Oct-2012 23:27:03 GMT ; path = /; HttpOnly".我认为所有这些限定符(domain,expires,path和HttpOnly)必须适用于此标头中设置的所有cookie. (4认同)
  • 啊,但是你可以在同一个标​​题中设置不同过期的cookie吗?说,你能把它转换成一个标题吗?Set-Cookie:name1 = value1; Expires = Wed,2012年2月22日17:45:00 GMT Set-Cookie:name2 = value2; Expires = Wed,09 Jun 2021 10:18:14 GMT (3认同)

hei*_*erg 16

由于重复的标头可能会导致各种Web服务器和API出现问题(无论规范是什么),我怀疑是否有任何通用用例,这是最佳做法.当然,这并不是说某个地方的人没有这样做.

  • 某些标题旨在复制。自从最初发布此答案以来,这些标头(例如,“Link”)的数量和流行程度有所增加,但即便如此,发送多个“Set-Cookie”标头也很常见。 (5认同)

And*_*ena 8

当你在寻找用例时,也许Accept是有效的.

  • 接受:application/json
  • 接受:application/xml


Jul*_*hke 7

它只允许使用非常特定格式的标头,参见RFC 2616,第4.2节.

  • 这个链接非常有用.特别是出现多次的标题部分也必须能够用逗号分隔值表示为单个标题. (8认同)