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中的任何标签或属性。如果你在页面里用<meta>模拟(如<meta http-equiv="Strict-Transport-Security" content="...">),它完全无效——因为此时请求已通过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访问
验证是否生效
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
- 在Chrome地址栏输入
chrome://net-internals/#hsts,查询域名是否已记录 - 使用在线工具如 securityheaders.com 检测响应头是否返回且格式正确
- 尝试访问
http://yourdomain.com—— 正常应直接跳转到HTTPS,且地址栏不出现“不安全”提示
不复杂但容易忽略
立即学习“前端免费学习笔记(深入)”;


















