HSTS是HTTP响应头而非HTML5标准,需服务器在HTTPS响应中配置Strict-Transport-Security头,含max-age、includeSubDomains和preload参数,禁用HTTP访问并防范降级攻击。

Strict-Transport-Security(HSTS)不是HTML5标准的一部分,而是HTTP协议层面的安全响应头。它由服务器在HTTPS响应中发送,浏览器据此强制后续所有连接都走HTTPS,从而杜绝HTTP明文通信风险。要真正实现“用户始终处于加密连接中”,关键不在HTML代码里写什么,而在于服务端正确配置并持续维护这个响应头。
HSTS响应头必须由服务器发出
浏览器只认Strict-Transport-Security HTTP响应头,不识别HTML中的任何标签或属性。如果你在页面里用模拟(如),它完全无效——因为此时请求已通过HTTP发起,敏感信息可能已被劫持。唯一有效方式是:
- 网站已部署有效SSL/TLS证书
- 所有响应(尤其是首页、登录页、API入口)都包含合法的
Strict-Transport-Security头 - 该响应本身必须通过HTTPS返回(HTTP响应带HSTS头会被忽略)
核心配置参数要设对
典型安全配置如下:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
-
max-age=31536000表示浏览器记住该策略一年(31536000秒),期间所有对该域名的HTTP请求自动转为HTTPS -
includeSubDomains让策略覆盖所有子域名(如mail.example.com、api.example.com),避免子域被降级攻击 -
preload是加入浏览器预加载列表的前提;提交到 hstspreload.org 后,新安装的Chrome、Edge、Firefox等会在首次访问前就强制HTTPS,消除首次访问的“裸HTTP窗口期”
启用前必须确认三件事
- 全站所有资源(图片、脚本、iframe、API)均已支持HTTPS,否则启用了HSTS会导致部分功能白屏或中断
- 不在测试环境或自签名证书站点启用
preload,否则可能被永久加入预加载列表,撤回困难 - 确保时间同步准确,
max-age过期后若未刷新,浏览器将恢复允许HTTP访问
验证是否生效
- 在Chrome地址栏输入
chrome://net-internals/#hsts,查询域名是否已记录 - 使用在线工具如 securityheaders.com 检测响应头是否返回且格式正确
- 尝试访问
http://yourdomain.com—— 正常应直接跳转到HTTPS,且地址栏不出现“不安全”提示
不复杂但容易忽略
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











