我向HTTP(非HTTPS)网站发出了POST请求,检查了Chrome开发者工具中的请求,发现它在将其发送到服务器之前添加了自己的标头:
Upgrade-Insecure-Requests: 1
在 Upgrade-Insecure-Requests
上搜索后,我只能找到information关于发送this标头的服务器:
Content-Security-Policy: upgrade-insecure-requests
这似乎是相关的,但仍然非常不同,因为在我的情况下,CLIENT在请求中发送标头,而我发现的所有信息都与SERVER在响应中发送相关标头有关 .
那么为什么Chrome(44.0.2403.130米)将 Upgrade-Insecure-Requests
添加到我的请求中它又做了什么?
更新2016-08-24:
此 Headers 已添加为W3C Candidate Recommendation,现已正式认可 .
对于那些刚刚遇到这个问题并且感到困惑的人来说,Simon East的解释很好 .
Upgrade-Insecure-Requests: 1
标头曾经是 HTTPS: 1
in the previous W3C Working Draft,并且在更改正式被接受之前被Chrome重命名为 quietly .
(在此过渡期间,当此 Headers 中没有官方文档时,系统会询问此问题,Chrome是唯一一个发送此 Headers 的浏览器 . )
2 回答
Short answer: it's closely related to the Content-Security-Policy: upgrade-insecure-requests response header, indicating that the browser supports it (and in fact prefers it).
它花了我30分钟的谷歌搜索,但我终于发现它埋在W3规格 .
之所以引起混淆,是因为规范中的 Headers 是
HTTPS: 1
,这就是Chromium实现它的方式,但在此之后_(特别是WordPress和WooCommerce),Chromium团队道歉:他们的修复是将其重命名为
Upgrade-Insecure-Requests: 1
,并且规范已经更新以匹配 .无论如何,这是the W3 spec (as it appeared at the time)的解释......
这解释了整个事情:
资料来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests