13

问题:Vary当服务器接受 gzip/deflate 连接并为移动客户端提供不同的内容时,发送 HTTP 标头的最佳方式是什么?

我看到了两种可能的变体,但我找不到任何有用的信息,无论它们是否正确和/或大多数代理和搜索引擎都支持:

  1. 将变体组合成一行:Vary: Accept-Encoding,User-Agent
  2. 发送两个单独的标头:

Vary: Accept-Encoding

Vary: User-Agent

欢迎任何信息或适当的 W3C 标准的链接:)

4

2 回答 2

15

两者都是有效的(并且意思相同)。

不,W3C 在这里不相关。您需要查看 IETF RFC 7230 和 7231。

于 2015-03-01T21:13:59.530 回答
0

两种情况下允许多个具有相同名称的标头字段:

  1. Set-Cookie

  2. 值始终为列表的所有标头字段(以逗号分隔的值)

示例:Accept-Encoding, Vary, ...

RFC 7230 - 3.2.2

发送者不得在消息中生成具有相同字段名称的多个头字段,除非该头字段的整个字段值被定义为逗号分隔列表 [即,#(values)] 或头字段是一个很好的-已知异常(如下所述)。

接收者可以将多个具有相同字段名称的头字段组合成一个“字段名称:字段值”对,而不改变
消息的语义,方法是将每个后续字段值按顺序附加到组合的字段值上,用 a 分隔逗号。
因此,接收具有相同字段名称的头字段的顺序
对于组合字段
值的解释很重要;
转发消息时,代理不得更改这些字段值的顺序。

注意:在实践中,“Set-Cookie”头域([RFC6265])在响应消息中经常出现多次,并且不使用列表语法,违反了上述对多个同名头域的要求。由于它不能组合成单个字段值,因此接收者在处理标头字段时应将“Set-Cookie”作为特殊情况处理。(详见 [Kri2001] 的附录 A.2.3。)

于 2020-02-04T15:13:32.570 回答