HSTS 开了之后,浏览器不肯走 HTTP
给站点加了 Strict-Transport-Security: max-age=31536000,过几天想临时用 HTTP 调试,浏览器直接跳到 https,连“继续访问”都不给。
这就是 HSTS 的设计:浏览器记住这个域名在 max-age 内只能走 HTTPS,且拒绝跳过证书错误。清除办法只有清浏览器 HSTS 列表(Chrome 是 chrome://net-internals/#hsts),或者等过期。
所以 max-age 别一上来就写一年。先 max-age=300 观察几天,确认全站 HTTPS 没有遗漏子域,再逐步加长。带 includeSubDomains 更要小心——一个没配证书的子域会直接不可访问。
另外,HSTS 头只在 HTTPS 响应里生效,HTTP 响应里带了会被忽略。