根域名HSTS缓存策略:HTTP跳转HTTPS路径选择及预加载影响
关于HSTS策略下的HTTP重定向选择
首先得明确一个核心知识点:HSTS头的作用域是返回它的那个域名,includeSubDomains只会覆盖该域名的所有子域名,而不会向上覆盖父域名(比如www.example.com的HSTS不会影响根域名example.com)。结合你的HSTS配置max-age=31536000; includeSubDomains; preload,我们分场景来分析:
一、如果你的域名已经加入HSTS预加载列表
预加载的核心是把你的域名塞进浏览器内置的HSTS名单里,只要用户的浏览器支持预加载(现在主流浏览器都支持),根本不会发起任何HTTP请求——浏览器会直接把所有http://example.com或http://www.example.com的请求强制转成HTTPS。
这种情况下,两种重定向方式都可行,但更推荐直接把http://www.example.com重定向到https://www.example.com:
- 减少一次跳转,用户能更快到达目标页面;
- 完全不用担心明文跳转的风险,因为浏览器从一开始就走HTTPS通道。
二、如果还没加入预加载,或需要兼容不支持预加载的浏览器
这时候要优先考虑让浏览器尽快缓存覆盖整个域名体系的HSTS策略,推荐的流程是:
- 把
http://www.example.com和http://example.com都301永久重定向到https://example.com; - 在
https://example.com的响应头里返回你的完整HSTS策略; - 再从
https://example.com301重定向到https://www.example.com(如果www是你的主访问域名)。
这么做的好处是:
- 首次访问HTTP链接时,虽然第一次跳转是明文,但用户到达
https://example.com后,浏览器会缓存覆盖所有子域名的HSTS策略(因为includeSubDomains); - 后续任何访问该域名下的HTTP链接(包括
http://www.example.com),都会被浏览器自动强制转成HTTPS,不需要再走服务器跳转,彻底避免明文传输风险。
额外注意点
- 一定要用301永久重定向,而非302临时重定向——301会被浏览器缓存,减少后续不必要的跳转请求;
- 如果你的主域名是www而非根域名,记得在
https://www.example.com也返回同样的HSTS策略,双重保障; - 预加载一旦提交申请并通过,很难移除,所以要确保你的整个域名体系(包括所有子域名)都能稳定支持HTTPS后再提交。
内容的提问来源于stack exchange,提问作者rubberband876
相关产品推荐
相关产品推荐

