【问题标题】:Multiple Vary HTTP headers or one combined?多个 Vary HTTP 标头还是一个组合?
【发布时间】:2023-03-23 04:42:01
【问题描述】:

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

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

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

Vary: Accept-Encoding

Vary: User-Agent

欢迎提供任何相关 W3C 标准的信息或链接 :)

【问题讨论】:

    标签: http http-headers vary


    【解决方案1】:

    两种情况下允许多个同名的头域:

    1. Set-Cookie

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

    示例:Accept-EncodingVary、...

    RFC 7230 - 3.2.2

    发件人不得生成多个具有相同的标头字段 消息中的字段名称,除非整个字段值 该标头字段被定义为逗号分隔的列表[即,#(values)] 或者标头字段是一个众所周知的例外(如下所述)。

    收件人可以将多个标题字段与同一字段组合 名称转换为一对“字段名称:字段值”,而不更改
    消息的语义,通过将每个后续字段值附加到 按顺序组合的字段值,以逗号分隔。订单
    其中接收到的具有相同字段名的头字段是
    因此对组合场的解释具有重要意义
    价值;当
    时,代理不得更改这些字段值的顺序 转发消息。

    注意:在实践中,“Set-Cookie”标头字段([RFC6265])通常 在响应消息中出现多次并且不使用 列表语法,违反以上对多头的要求 具有相同名称的字段。因为它不能组合成一个 单个字段值,收件人应将“Set-Cookie”作为 处理标题字段时的特殊情况。 (见附录 A.2.3 [Kri2001] 的详细信息。)

    【讨论】:

      【解决方案2】:

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

      不,W3C 与此无关。您需要查看 IETF RFC 7230 和 7231。

      【讨论】:

      • 值得一提的是,尽管语法不同,但这些变体在语义上相同
      • 谢谢,朱利安!我应该提一下,根据您在回答中提供的tools.ietf.org/html/rfc7230#section-3.2.2(RFC 7230 第 3.2.2 节),建议将标头组合成一个字符串,但 允许分离。不确定它是否适用于 Vary 标头。
      • “除非该标头字段的整个字段值被定义为逗号分隔的列表” - 选择性引用没有帮助....
      猜你喜欢
      • 2017-07-20
      • 2017-02-25
      • 2011-11-27
      • 2010-12-30
      • 1970-01-01
      • 2015-05-30
      • 2011-02-15
      • 1970-01-01
      相关资源
      最近更新 更多