46

I'm having difficulty finding out what it means when I have the response header Non-Authoritative-Reason : HSTS

I have searched a lot but just came up with some explanations about HSTS (redirection from HTTP to HTTPS). Can anyone help me with that? By the way I'm using Chrome.

Thanks

4

3 回答 3

75

您尝试连接的服务器使用严格传输安全 (HSTS) 来确保此站点仅使用 https 而不是默认的 http。

这意味着如果您输入http://www.servername.com,Chrome会自动将其转换为https://www.servername.com

这是一项防止使用 http 的安全功能,http 是未加密的,并且可以被黑客读取和更改。这可以通过服务器告诉 Chrome(通过响应请求发送的特殊 HTTP 标头)它使用 HSTS 来设置。然后,Chrome 会将此设置缓存一段给定的时间,如该标头中的 max-age 值中定义的那样。此外,网站所有者可以将他们的网站提交到自动包含在 Chrome 中的预加载列表 - 这甚至可以保护第一次访问,因为通常您需要访问该网站以接收标题以激活它。

Chrome 在网络选项卡中显示这一点的方式是创建一个虚拟 307 响应,并重定向到地址的 https 版本。但这是一个虚假的响应,不是由服务器生成的——事实上,Chrome 在请求到达服务器之前就已经在内部完成了。

要清除站点的此设置,您可以在 Chrome 的 URL 字段中键入以下内容:chrome://net-internals/#hsts然后搜索您的站点并将其删除。您也可以将其设置在顶级域并包含子域,因此您可能需要从那里删除。或者,您可以更改服务器配置以发布 max-age 为 0 的标头并重新访问该站点以清除此标头,然后停止发布标头,这对于其他不容易清除此标头的浏览器很有帮助。

请注意,如果站点在预加载列表中,则无法清除此设置,因为它嵌入在 Web 浏览器的代码中。网站所有者可以提交从预加载列表中删除的请求,但这需要几个月的时间才能完成 Chrome 的发布周期,而其他浏览器则没有明确的时间表。出于安全原因,Chrome 也无法覆盖预加载的设置。

于 2015-12-10T23:17:07.127 回答
8

BazzaDP 的回答的一些附加信息......

响应中Non-Authoritative-Reason : HSTS返回的不是您配置的内容,而是 Chrome 本身。由于 Chrome 劫持了请求,Chrome 还将添加此特定标头以告知 HSTS 已启用。查看网络选项卡,您将看到带有此标头集的虚假 307 响应。

由于Strict-Transport-Security在服务器上包含了标头,因此所有这些都已完成。

如果你想全力以赴,这里是HSTS 预加载列表

于 2017-08-11T08:16:56.473 回答
0

根据 MDN(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security):

使用HTTPStrict-Transport-Security访问您的站点时,浏览器会忽略该标头;这是因为攻击者可能会拦截 HTTP 连接并注入标头或删除它

HSTS Preload 列表部署建议提到:

将标头添加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>
于 2018-12-19T19:32:53.273 回答