【发布时间】:2017-08-05 18:31:17
【问题描述】:
这个问题似乎重复,但经过一番研究,没有找到可靠的答案。子问题是:
- 当
http-equiv和HTTP响应头的key相同,对应的value冲突时,哪个优先? - 第一个问题是否有任何规范,即使它没有被浏览器遵循?
- 如果没有规范,会发生什么?标准组有讨论吗?这种行为肯定需要在某些标准中加以定义。
以下是一些研究工作:
- 我在 HTML 规范中检查了4.2.5.3 Pragma directives,但没有提到优先级(
http-equiv="set-cookie"除外,在这种情况下,真正的 HTTP 响应标头优先)。 - 在response header VS meta tag 中,似乎真正的HTTP 响应标头优先于
Content-Type - 在Which X-UA-Compatible takes precedence? Http-header or Meta-tags? 中,似乎
http-equiv优先于X-UA-Compatible
在我看来,任何一个决定都是有道理的,但没有一个普遍的答案吗?
【问题讨论】:
-
注意:
set-cookie指令被声明为不符合要求,应该避免......我没有注意到任何关于优先级的内容。在我看来,假设是浏览器在收到 HTTP 响应和content-type标头后解析 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 点也表明这是已实施的解释。