Html 哪个优先,http等价还是http响应头?

Html 哪个优先,http等价还是http响应头?,html,http,Html,Http,这个问题似乎是重复的,但经过一些研究,没有找到可靠的答案。分问题是: 当http-equiv和http-response-header具有相同的键,并且它们对应的值冲突时,哪个键优先 第一个问题是否有任何规范,即使浏览器没有遵循 如果没有规范,会发生什么?在标准小组中是否有任何讨论?这种行为肯定需要在一些标准中加以定义 以下是一些研究工作: 我检查了HTML规范,但没有提到优先级(除了http equiv=“set cookie”,在这种情况下,真正的http响应头优先) 在中,真正的HTTP

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

  • http-equiv
    和http-response-header具有相同的键,并且它们对应的值冲突时,哪个键优先
  • 第一个问题是否有任何规范,即使浏览器没有遵循
  • 如果没有规范,会发生什么?在标准小组中是否有任何讨论?这种行为肯定需要在一些标准中加以定义
  • 以下是一些研究工作:

    • 我检查了HTML规范,但没有提到优先级(除了http equiv=“set cookie”,在这种情况下,真正的http响应头优先)
    • 在中,真正的HTTP响应头似乎优先于
      内容类型
    • 在中,似乎
      http equiv
      优先于
      X-UA-Compatible
    在我看来,这两个决定都是有道理的,但不是有一个普遍的答案吗?

    来自:

    如果发送了这两个指令,开发人员的首选项 (元元素)优先于web服务器设置(HTTP 标题)

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

  • HTTP重定向总是在甚至没有连接的情况下首先执行 页面被传输,当然甚至没有阅读
  • 如果没有任何HTTP重定向,则执行HTML重定向()
  • JavaScript重定向被用作最后手段,并且只有在 JavaScript是在客户端启用的
  • 您所需要的一切都在这里:


    从文档中看,不清楚http equiv与http标头中内容安全策略的优先级。 我在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

    使用
    标题设置内容安全策略“脚本src'self”https://connect.facebook.net/en_US/fbevents.js“
    该控制台对www.google-analytics.com和facebook.net都有争议

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


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

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

    注:声明
    set cookie
    指令不符合要求,应避免。。。我没有注意到任何关于优先权的事情。在我看来,假设浏览器在收到HTTP响应和
    内容类型
    头之后解析HTML。。。因此(
    Content-Type
    Content-Length
    等传输头除外,它们在解析HTML之前已被使用),
    meta
    标记中的新数据将覆盖从HTTP响应继承的旧数据。@Myst,对于
    Content-Type
    Content-Length
    ,很容易理解,HTTP响应头应该优先。但对于其他标题,这是令人困惑的。如果从时间轴的角度考虑,
    http equiv
    在http头之后使用,应该优先。但是,如果
    http equiv
    被视为http头的仿制品,那么“真正的”http头应该优先…就像我阅读第4.2.5.3节:“用户代理必须”。。。我相信这意味着需要浏览器来处理新数据。您问题的第3点也表明这是已实现的解释。谢谢@user3214387。由于此声明来自MSDN,因此我将其视为特定于Microsoft技术的声明。