我已将HSTS设置为多个站点正在使用的常见.htaccess。
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
但是当一个站点已经从虚拟主机配置中设置了HSTS头时,就会在响应中添加两个HSTS头。
所以在我在.htaccess上设置HSTS之前,如何检查HSTS标头是否已经存在?
答案 0 :(得分:2)
Header set
没问题。如果您使用Header add
,则会出现问题。
添加强> :即使此标头已存在,响应标头也会添加到现有标头集中。这可能导致两个(或更多) 标题具有相同的名称。这可能导致无法预料 应该使用后果,并且通常设置,追加或合并 代替。
设置强> :设置响应标头,用此名称替换任何以前的标头。该值可以是格式字符串。
https://httpd.apache.org/docs/current/en/mod/mod_headers.html
答案 1 :(得分:1)
或者使用setifempty
Header always setifempty Strict-Transport-Security "max-age=31536000" env=HTTPS
答案 2 :(得分:0)
正如@Croises报道的那样,它应该默认只是覆盖但在我的情况下,结果是虚拟主机配置设置的标头使用always
关键字,因此还添加了.htaccess设置的标头。
您也可以使用setifempty
但在我的情况下,我的Apache不是最新的(仅支持2.4.7以后)
所以我必须像下面这样做才能使它发挥作用。
Header always unset Strict-Transport-Security
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS