我知道HTTP服务器可以发送带有重复密钥的标头(至少会出现Set-Cookie
),但客户是否有合理的理由这样做?
答案 0 :(得分:1)
RFC 7230在某些情况下允许重复标头。来自section 3.2.2:
发件人不得生成具有相同字段的多个标题字段 在消息中命名,除非该字段的整个字段值 标题字段定义为以逗号分隔的列表[即#(值)] 或标题字段是一个众所周知的例外(如下所述)。
收件人可以将多个标题字段与同一字段组合在一起 将名称命名为一个"字段名称:字段值"一对,没有改变 消息的语义,通过附加每个后续字段值 按顺序组合的字段值,以逗号分隔。
一个有点"合理的"场景浮现在脑海中:当HTTP请求通过代理时,代理可能只是在另一个标头上(例如,X-Forwarded-For
或额外的Accept-Encoding
),而不是确定是否已经有标头存在,然后相应地解析和修改它。
从技术上讲,任何客户都是"允许"发送多个具有相同名称的标头,只要它符合上述RFC 7230中的要求。
答案 1 :(得分:0)
a)涉及多段代码时可能会更容易,
b)对于某些字段,例如Set-Cookie,这是不可避免的(见https://greenbytes.de/tech/webdav/rfc7230.html#rfc.section.3.2.2.p.4)。