【问题标题】:Which takes precedence, http-equiv or HTTP response header?哪个优先,http-equiv 或 HTTP 响应标头?
【发布时间】:2017-08-05 18:31:17
【问题描述】:

这个问题似乎重复,但经过一番研究,没有找到可靠的答案。子问题是:

  1. http-equiv和HTTP响应头的key相同,对应的value冲突时,哪个优先?
  2. 第一个问题是否有任何规范,即使它没有被浏览器遵循?
  3. 如果没有规范,会发生什么?标准组有讨论吗?这种行为肯定需要在某些标准中加以定义。

以下是一些研究工作:

在我看来,任何一个决定都是有道理的,但没有一个普遍的答案吗?

【问题讨论】:

  • 注意:set-cookie 指令被声明为不符合要求,应该避免......我没有注意到任何关于优先级的内容。在我看来,假设是浏览器在收到 HTTP 响应和 content-type 标头后解析 HTML...因此(除了传输标头,例如 Content-TypeContent-Length,之前已经使用过解析 HTML),meta 标签中的新数据将覆盖从 HTTP 响应继承的旧数据。
  • @Myst,对于Content-TypeContent-Length,很容易理解HTTP响应头应该优先。但是对于其他标题,这很令人困惑。如果从时间线的角度考虑,http-equiv 在 HTTP 标头之后被使用,应该优先。但是,如果 http-equiv 被视为 HTTP 标头的模仿,那么“真正的”HTTP 标头应该优先...
  • 我阅读第 4.2.5.3 节的方式:“用户代理必须”......我相信这意味着需要浏览器来处理新数据。您问题的第 3 点也表明这是已实施的解释。

标签: html http


【解决方案1】:

来自MSDN

如果发送了这两个指令,开发者的偏好 (元元素)优先于 Web 服务器设置(HTTP 标题)。

我找不到它是 IE\IIS 特定行为还是标准。

【讨论】:

  • 谢谢@user3214387。由于此声明来自 MSDN,因此我将其视为特定于 Microsoft 的技术。
【解决方案2】:

从文档中不清楚 http-equiv 与 http 标头中 Content-Security-Policy 的优先级是什么。 我已经在 Firefox 62.0 上进行了实验性测试:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://www.google-analytics.com/analytics.js"/>
<script src="https://www.google-analytics.com/analytics.js"></script>
<script src="https://connect.facebook.net/en_US/fbevents.js"></script>

当未设置 HTTP 标头时,控制台仅争论 facebook.net。

header set Content-Security-Policy "script-src 'self' https://connect.facebook.net/en_US/fbevents.js" 控制台争论 www.google-analytics.com 和 facebook.net。

当 http-equiv 被删除并保留 facebook.net 的标头时,控制台正确地争论 谷歌分析。

由此看来,http-equiv 和 http 标头的组合被检测为重复定义,根本无法识别。

【讨论】:

    【解决方案3】:

    Shahafo 发布的答案对于 X-UA-Compatible 标头和 IE 11 可能是正确的,但在一般情况下似乎并不正确。例如,对于 Firefox 和 Chrome,与缓存相关的 HTTP 标头的优先级高于与缓存相关的 http-equiv 标签。对于 IE 11,情况正好相反。

    【讨论】:

      【解决方案4】:
      1. HTTP 重定向总是在甚至没有 页面传输,当然甚至没有阅读。
      2. 如果没有任何 HTTP 重定向,则执行 HTML 重定向 ()。
      3. JavaScript 重定向被用作最后的手段,并且仅当 JavaScript 在客户端启用。

      你需要的都在这里:

      https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections

      【讨论】:

        猜你喜欢
        • 2018-08-23
        • 1970-01-01
        • 2010-10-23
        • 2011-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-01
        • 1970-01-01
        相关资源
        最近更新 更多