当前位置: 首页 > 知识库问答 >
问题:

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

于嘉誉
2024-03-25

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

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

共有2个答案

丁绪
2024-03-25

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。

贾建茗
2024-03-25

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

 类似资料:
  • 本文向大家介绍javascript 判断是否是微信浏览器的方法,包括了javascript 判断是否是微信浏览器的方法的使用技巧和注意事项,需要的朋友参考一下 用js判断当前环境是否是是微信内置浏览器有两个方法: 1.判断useragent 2.判断是否支持微信内置浏览器才支持的一些方法,比如WeixinJSBridge 本次先介绍第一中方法,第二种方法等哪天再更新! 判断代码如下: 就是如此简单

  • 本文向大家介绍js判断浏览器是否支持html5,包括了js判断浏览器是否支持html5的使用技巧和注意事项,需要的朋友参考一下 现在HTML5似乎慢慢流行起来了,有些前端高手为了兼容考虑,会在网页中添加对客户端浏览器判断的代码,知道用户浏览器是否支持HTML5,下面分享想我自己使用的2种方法 方法一, 方法二, 方法三: 有更好的方法的话,请联系我!谢谢

  • 使用vue3项目,我想关闭浏览器或者关闭浏览器的标签页清除token,该怎么操作

  • 本文向大家介绍js如何判断用户是否是用微信浏览器,包括了js如何判断用户是否是用微信浏览器的使用技巧和注意事项,需要的朋友参考一下 上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk。然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器

  • 问题内容: 假设您的页面具有相对严格的doctype和HTML标记,并且非常接近合规性,但是可能会以几种愚蠢的方式错过,这可能是因为用户内容超出了您的控制范围…表示您正在处理内容管理系统或内容管理系统的主题,在其中您可以控制一些基本结构并需要一些javascript,但是您对进入页面的其他所有内容不承担任何责任。 您如何知道(或:将由什么决定)浏览器何时决定进入“怪癖”模式,而不是使用符合标准的引

  • 问题内容: 我有一个每秒调用一次的函数,仅当当前页面位于前台时才运行,即用户没有最小化浏览器或切换到另一个选项卡。如果用户不看它,它是没有用的,并且可能占用大量CPU,因此我不想只在后台浪费时间。 有人知道如何用JavaScript讲这个吗? 注意:我使用jQuery,因此,如果您的答案使用了jQuery,那就好了:)。 问题答案: 您将使用窗口的和事件: 要回答“ Double Fire”的评论