includeSubDomains指令使HSTS策略覆盖主域及所有子域名,强制其仅通过HTTPS访问;启用前须确保所有子域已部署有效TLS证书并稳定支持HTTPS,否则将导致访问失败。

includeSubDomains 的作用与影响
includeSubDomains 是 HSTS 响应头中的可选指令,启用后表示当前域名及其所有子域名都必须通过 HTTPS 访问。比如主站 example.com 配置了该参数,那么 api.example.com、blog.example.com、shop.example.com 等所有子域都会被强制纳入 HSTS 保护范围。
这个参数一旦生效,浏览器在 max-age 有效期内将拒绝任何子域名的 HTTP 请求,哪怕用户手动输入 http://api.example.com 也会被拦截并阻止连接。因此启用前必须确保:
- 所有子域名均已部署有效的 TLS 证书,并能稳定响应 HTTPS 请求
- 没有遗留 HTTP-only 的内部服务或测试子域(如 dev.example.com)
- CDN、API 网关、静态资源子域等均已完成 HTTPS 接入
preload 的含义与前置条件
preload 不是服务器自动启用的功能,而是一个“申请加入浏览器预加载列表”的信号。当响应头中包含 preload 指令,且网站满足一定要求时,可向 Chromium 团队提交域名,审核通过后会被写入 Chrome、Edge、Firefox 等主流浏览器的内置 HSTS 列表——这意味着用户首次访问该域名时,浏览器就已知道“只许走 HTTPS”,无需等待第一次 HTTPS 响应返回 HSTS 头。
要成功提交 preload,必须同时满足以下硬性条件:
AI 舌诊面诊问诊医疗系统 + 诊疗商城系统源码是一套结合 AI 辅助诊断与商品转化的健康类程序,基于浩创云、ThinkPHP(PHP)开发,支持微信服务号与 H5 端,适合做中医舌诊面诊问答、健康建议推送以及配套诊疗商品的运营。
- 主域名及所有相关子域名均已配置有效 TLS 证书,且支持 TLS 1.2+ 和现代加密套件
- 已启用 includeSubDomains(这是 preload 提交的强制要求)
- max-age ≥ 31536000 秒(即至少 1 年)
- 所有 HTTP 请求必须 301 重定向到 HTTPS(不能出现明文响应)
- 确保响应头中始终携带 HSTS,包括 404、500 等错误页面(需加 always 参数)
preload 提交流程简明步骤
提交不是一键完成的操作,需按顺序验证、准备、提交、等待审核:
- 先在生产环境稳定运行 HSTS 至少 1–2 周(推荐 1 个月),确认无子域异常、无混合内容、无证书中断
- 使用 hstspreload.org 在线检测工具输入域名,检查是否满足全部准入条件
- 若检测通过,点击 “Submit to list” 进入表单页,填写域名、联系邮箱(用于审核通知)
- 提交后进入排队审核,通常需数天至数周;审核通过后,域名会出现在 Chromium 静态列表 中
- 新版本浏览器发布后(一般 4–8 周),用户升级后即可享受“首次访问即强制 HTTPS”效果
常见误区提醒
preload 不等于“立刻全网生效”,也不是 Nginx 加个参数就能开通的功能。它本质是浏览器厂商主导的安全协作机制:
- 即使提交成功,旧版浏览器(未更新静态列表)仍无法识别你的 preload 状态
- 撤回 preload 极其困难,一旦加入列表,移除需向 Chromium 团队发起正式申请并说明充分理由
- 仅在主配置块(如 server 块)中添加 add_header 不够,务必加上 always 标志,否则错误页不发头,会导致 preload 审核失败
- 不要对测试环境或 staging 子域开启 preload,避免误伤真实流量










