非权威原因标头字段[HTTP]

时间:2015-12-05 17:03:18

标签: google-chrome http hsts

当我有响应标题Non-Authoritative-Reason : HSTS

时,我很难找到它的含义

我搜索过很多但只是想出了一些关于HSTS的解释(从HTTP重定向到HTTPS)。任何人都可以帮助我吗?顺便说一句,我正在使用Chrome。

由于

3 个答案:

答案 0 :(得分:54)

您尝试连接的服务器使用strict-transport-security(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的网址字段中输入以下内容:chrome://net-internals/#hsts,然后搜索您的网站并将其删除。您也可以在顶级域中设置此项并包含子域,以便您可能需要从中删除。或者,您可以更改服务器配置以发布max-age为0的标头,然后重新访问该网站以清除此标题,然后停止发布标头,这对于其他浏览器很有帮助,因为它不太容易清除它。

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

答案 1 :(得分:3)

BazzaDP的一些额外信息答案......

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

所有这一切都已完成,因为在您的服务器上包含了Strict-Transport-Security标题。

如果您想全力以赴,请点击HSTS preload list

答案 2 :(得分:0)

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

  

Strict-Transport-Security标头在以下情况下会被浏览器忽略   您的网站是通过 HTTP 访问的;这是因为攻击者可能   拦截HTTP连接并注入标头或将其删除

HSTS预载列表deployment recommendations提到:

  

Strict-Transport-Security标头添加到所有 HTTPS 响应

HTML5 Boilerplate显示了如何仅通过HTTPS(在Apache中)设置Strict-Transport-Security

# 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>