文章不易,请关注公众号 毛毛虫的小小蜡笔,多多支持,谢谢。
定义
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来验证,不带协议就可以。
具体如下截图所示:
浏览器重定向到HTTPS,即发起第二个请求,此时是HTTPS请求。
详情 请查看:毛毛虫的小小蜡笔
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。