如何解释多个 Accept-* headers
How to interpret multiple Accept-* headers
我对 RFC 2616 的阅读没有回答我的问题:
服务器应该如何解释多个Accept, Accept-Encoding, Accept-Language, 等等, headers?
当然,这通常应该很少发生,但我绝不会假设每个 HTTP 客户端实际上都在做它应该做的事情。
假设一个 HTTP 请求包括以下内容:
Accept-Language: en
Accept-Language: pt
应服务器:
- 合并结果,得到一个有效的
Accept-Language: en, pt
?
- 只尊重第一个(
en
)?
- 只尊重最后一个(
pt
)?
- 发出嘶嘶声(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" 对,在不更改消息语义的情况下,通过按顺序将每个后续字段值附加到组合字段值,并用逗号分隔。( ...)"
我对 RFC 2616 的阅读没有回答我的问题:
服务器应该如何解释多个Accept, Accept-Encoding, Accept-Language, 等等, headers?
当然,这通常应该很少发生,但我绝不会假设每个 HTTP 客户端实际上都在做它应该做的事情。
假设一个 HTTP 请求包括以下内容:
Accept-Language: en
Accept-Language: pt
应服务器:
- 合并结果,得到一个有效的
Accept-Language: en, pt
? - 只尊重第一个(
en
)? - 只尊重最后一个(
pt
)? - 发出嘶嘶声(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" 对,在不更改消息语义的情况下,通过按顺序将每个后续字段值附加到组合字段值,并用逗号分隔。( ...)"