如何解释多个 Accept-* headers

How to interpret multiple Accept-* headers

我对 RFC 2616 的阅读没有回答我的问题:

服务器应该如何解释多个Accept, Accept-Encoding, Accept-Language, 等等, headers?

当然,这通常应该很少发生,但我绝不会假设每个 HTTP 客户端实际上都在做它应该做的事情。

假设一个 HTTP 请求包括以下内容:

Accept-Language: en
Accept-Language: pt

应服务器:

  1. 合并结果,得到一个有效的Accept-Language: en, pt?
  2. 只尊重第一个(en)?
  3. 只尊重最后一个(pt)?
  4. 发出嘶嘶声(return 400 状态,也许?)

选项 #1 对我来说似乎是最自然的,最有可能是客户的意思,并且最不可能完全打破预期,即使它不是客户的意思。

但是对于如何处理这些情况是否有任何实际规则(最好由 RFC 指定)?

1) 您正在查看过时的 RFC。 RFC 2616 已于两年前废弃。

2) 也就是说,答案是 1);请参阅 https://greenbytes.de/tech/webdav/rfc7230.html#rfc.section.3.2.2.p.3: "A recipient MAY combine multiple header fields with the same field name into one "field-name: field-value" 对,在不更改消息语义的情况下,通过按顺序将每个后续字段值附加到组合字段值,并用逗号分隔。( ...)"