如何判断浏览器是否开启了 HSTS?

浏览器开启了 HSTS(HTTP Strict Transport Security)功能,它会告诉浏览器只能通过 https 访问,绝对禁止 http 方式,所以浏览器中输入http 后自动转成了 https。

疑问:如何得知浏览器是否开启了此功能?
原因:项目内需要跳转到新标签页,浏览器强制转换协议会报错(502)

阅读 1.1k
2 个回答

不知道你为什么要这样做。如果想要强制别人访问HTTPS,你可以在Nginx之类的HTTP服务上面做转发,把HTTP请求重定向到HTTPS上面。

HSTS 应该是浏览器默认就“支持”的

项目内需要跳转到新标签页,浏览器强制转换协议会报错(502)

HSTS是不是要开启,开启什么策略,这个是需要WEB服务器告诉浏览器的(通过返回的响应头Strict-Transport-Security来开启HSTS )。

项目跳转到新标签页会报错(502),这个按理报错说和 HSTS 没有任何关系。


开启了HSTS后(响应头里面设置了Strict-Transport-Security),最直接的影响是:浏览器收到了Strict-Transport-Security这个请求头的信息后,然后后续再访问的这个域名,就只会使用HTTPS协议去访问。

在正常情况下,在chrome浏览器中,没有开启HSTS时,如果证书错误,chrome浏览器会提示“隐私设置错误”,这个时候点击“高级”还可以继续访问证书错误的网站。

如果这个时候开启了HSTS,chrome浏览器也会提示“隐私设置错误”,但是不会给提示让用户继续访问。

上面就是最明显的一个开启了HSTS和不开启HSTS的区别。


在没有HSTS这个机制的情况下,可能用户每次访问的都是HTTP协议,所以即使服务端第一时间重定向到HTTPS,中间人还是可以获取到重定向之前的请求信息。有了HSTS之后,除了第一次服务端可能收到HTTP协议的请求,后续客户端发起的请求都会是HTTPS。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题