我在查看响应头Non-Authoritative-Reason : HSTS
时遇到了困难。
我已经进行了大量搜索,但只找到一些关于HSTS(从HTTP重定向到HTTPS)的解释。有人能帮我吗?顺便说一下,我正在使用Chrome浏览器。
谢谢。
我在查看响应头Non-Authoritative-Reason : HSTS
时遇到了困难。
我已经进行了大量搜索,但只找到一些关于HSTS(从HTTP重定向到HTTPS)的解释。有人能帮我吗?顺便说一下,我正在使用Chrome浏览器。
谢谢。
您正在尝试连接的服务器使用严格的传输安全性(HSTS)来确保仅使用https与该站点连接,而不是默认的http。
这意味着如果您输入http://www.servername.com,那么Chrome将自动将其转换为https://www.servername.com。
这是一项安全功能,用于防止使用未加密的http,黑客可以读取和更改。服务器通过响应请求时发送的特殊HTTP标头告诉Chrome(通过设置HSTS),可以设置此功能。然后,Chrome会将此设置缓存给定的时间,该时间由标头中的max-age值定义。此外,网站所有者可以将其网站提交到预加载列表中,该列表会自动包含在Chrome中-这甚至保护了第一次访问,因为通常需要访问该网站以接收标头以激活此功能。
Chrome在网络选项卡中显示此方式是通过创建一个虚假的307响应,并重定向到地址的https版本。但这是一个虚假的响应,不是服务器生成的-实际上,Chrome在请求甚至到达服务器之前就已经内部完成了这个过程。
要清除某个站点的此设置,您可以在Chrome的URL字段中键入以下内容:chrome://net-internals/#hsts
,然后搜索您的站点并将其删除。您还可以在顶级域和包括子域的情况下设置此项,因此您可能需要从那里删除。或者,您可以仅更改服务器配置以发布具有最大年龄为0的标头,并重新访问该站点以清除此设置,然后停止发布标头,这对于其他浏览器很有帮助,因为不太容易清除此设置。针对BazzaDP的回答,还有一些额外的信息...
响应中返回的Non-Authoritative-Reason : HSTS
并非由您配置,而是由Chrome自己添加的。由于Chrome劫持了请求,因此Chrome还将添加此特定标头以告知HSTS已启用。查看网络选项卡,您将看到带有此标头设置的虚假307响应。
所有这些都是因为您在服务器上包含了Strict-Transport-Security
标头。
如果您想全力以赴,这里是HSTS预加载列表
根据MDN (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)的说法:
当您的网站使用 HTTP 访问时,浏览器会忽略
Strict-Transport-Security
头;这是因为攻击者可能会拦截HTTP连接并注入或删除标头。
HSTS预加载列表deployment recommendations提到:
将
Strict-Transport-Security
头添加到所有 HTTPS 响应中
HTML5 Boilerplate展示了如何仅在HTTPS上设置 Strict-Transport-Security
(在apache中):
# Set 'Strict-Transport-Security' over HTTPS only!
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L]
</IfModule>