You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决HTTP Strict Transport Security (HSTS)重复标头及max-age=0问题

解决Apache HSTS标头重复及max-age=0标头移除问题

你遇到的问题是Apache同时输出了两个HSTS标头,其中max-age=0的标头来自服务器其他配置段,和你手动添加的规则冲突。以下是解决步骤:

1. 定位冲突配置的来源

  • 检查全局配置文件(如httpd.conf、apache2.conf),搜索Strict-Transport-Security,确认是否存在全局的Header指令设置了HSTS
  • 查看其他VirtualHost配置(包括非443端口的配置),排查是否有HSTS相关规则
  • 检查网站目录下的.htaccess文件,看是否有Header set/Header always set设置HSTS的代码
  • 若使用过Let's Encrypt的certbot工具,检查自动生成的配置文件(如/etc/apache2/conf-available/ssl-params.conf),这类工具可能默认添加HSTS配置

2. 删除冲突配置,统一管理HSTS

找到输出max-age=0的配置段,直接删除对应的HSTS Header指令。建议将HSTS配置仅放在HTTPS的VirtualHost段中,避免HTTP请求输出无效标头。

3. 用指令强制覆盖标头(临时方案)

如果暂时找不到冲突配置,可使用Header edit或Header merge强制统一标头值:

<VirtualHost *:443>
...
# 强制替换所有HSTS标头为指定值
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# 或者直接修改现有标头中的max-age=0值
Header always edit Strict-Transport-Security "max-age=0" "max-age=31536000"
...
</VirtualHost>

注意:临时方案仅作过渡,最终建议找到根源配置删除,避免后续维护混乱。

4. 验证并重启服务

修改配置后,先检查语法正确性:

apachectl configtest
# 或Debian/Ubuntu系统用 apache2ctl configtest

确认无错误后重启Apache:

systemctl restart apache2
# 或CentOS/RHEL系统用 service httpd restart

最后用curl验证响应头:

curl -I https://你的域名.com

确保仅返回一个Strict-Transport-Security: max-age=31536000; includeSubDomains标头即可。

内容的提问来源于stack exchange,提问作者Mr.Robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 11:18:38