文章不易,请关注公众号 毛毛虫的小小蜡笔,多多支持,谢谢。

定义

HSTS,全称是HTTP Strict Transport Security。
设置后,浏览器只会通过HTTPS来访问服务端。

详情解释

你的网站第一次通过HTTPS请求,服务器响应Strict-Transport-Security头,浏览器记录下这些信息,然后后面尝试访问这个网站的请求都会自动把HTTP替换为HTTPS。

当HSTS头设置的过期时间到了,后面通过HTTP的访问恢复到正常模式,不会再自动跳转到HTTPS。

每次浏览器接收到Strict-Transport-Security头,它都会更新这个网站的过期时间,所以网站可以刷新这些信息,防止过期发生。

Chrome、Firefox等浏览器里,当您尝试访问该域名下的内容时,会产生一个307 Internal Redirect(内部跳转),自动跳转到HTTPS请求。

如果服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问网站。
一般情况下,如果是证书无效,浏览器会给出提示警告,但用户还是能选择继续访问来忽略警告。
但如果开启了HSTS,那么浏览器就不会让你绕过警告了。

响应头

在服务端设置响应头,即可开启HSTS功能。

// 后面两个值是可选的。
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Demo

在浏览器输入www.baidu.com

浏览器默认是HTTP协议,所以发起的第一个请求是HTTP请求。
然后服务端会重定向到HTTPS,此时状态码是301或302。直接输入baidu.com实际上会重定向到www.baidu.com。

为了排除域名跳转因素影响,所以这里假设直接输入www.baidu.com来验证,不带协议就可以。
具体如下截图所示:
image.png

浏览器重定向到HTTPS,即发起第二个请求,此时是HTTPS请求。



详情 请查看:毛毛虫的小小蜡笔


simonbaker
256 声望2 粉丝

wx:毛毛虫的小小蜡笔