Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Non-Authoritative-Reason header field [HTTP]

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

like image 933
jamal Avatar asked Dec 05 '15 17:12

jamal


People also ask

How do I fix HTTP Strict Transport Security?

Go to SSL/TLS > Edge Certificates. For HTTP Strict Transport Security (HSTS), click Enable HSTS. Set the Max Age Header to 0 (Disable). If you previously enabled the No-Sniff header and want to remove it, set it to Off.

What is an Hsts header?

The HTTP Strict-Transport-Security response header (often abbreviated as HSTS) informs browsers that the site should only be accessed using HTTPS, and that any future attempts to access it using HTTP should automatically be converted to HTTPS.

What is Max age in Hsts header?

Generally, you want to set a custom HTTP header for Strict-Transport-Security with the value max-age=31536000; includeSubDomains; preload (or some variant).


2 Answers

The server you are trying to connect with uses strict-transport-security (HSTS) to ensure https only is used with this site rather than the default http.

This means if you enter http://www.servername.com then Chrome will automatically convert this to https://www.servername.com.

This is a security feature to prevent use of http, which is unencrypted and which can be read and altered by a hacker. This can be set by the server telling Chrome (via a special HTTP Header sent in response to requests) that it uses HSTS. This setting is then cached by Chrome for the given amount of time as defined in the max-age value in that header. Additionally the site owner can submit their site to a preload list that is automatically included in Chrome - which protects even the first visit as normally you need to visit the site to receive the header to activate this.

The way Chrome shows this in the network tab is by creating a dummy 307 response with a redirect to the https version of the address. But that's a fake response and is not generated by the server - the reality is Chrome did that internally before the request even went to the server.

To clear this setting for a site you can type the following into Chrome's URL field: chrome://net-internals/#hsts and then search for your site and delete it. You may also set this at a top level domain and include subdomains so you may need to delete from there. Alternatively you can just alter your server config to publish the header with a max-age of 0 and revisit the site to clear this, then stop publishing the header, which can be helpful for other browsers where it's not quite as easy to clear this.

Note you cannot clear this setting if a site is on the preload list as this is embedded in the web browser's code. The site owner can submit a request to be removed from the preload list but this takes several months to go through the release cycle for Chrome and no defined timeline for other browsers. Chrome also provides no way to override preloaded settings - for security reasons.

like image 52
Barry Pollard Avatar answered Sep 20 '22 13:09

Barry Pollard


Some additional info to BazzaDP's answer...

The Non-Authoritative-Reason : HSTS returned in the response is not something you have configured, but rather Chrome itself. Since Chrome hijacks the request, Chrome will also add this particular header to tell HSTS is enabled. Looking at the network tab, you will see the fake 307 response with this header set.

All this is done since you included the Strict-Transport-Security header on your server.

If you want to go all in, here's the HSTS preload list

like image 38
Jim Aho Avatar answered Sep 16 '22 13:09

Jim Aho