如果已经不存在,请在htaccess中设置HSTS标头

时间:2017-11-01 07:43:12

标签: apache .htaccess hsts

我已将HSTS设置为多个站点正在使用的常见.htaccess。

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS

但是当一个站点已经从虚拟主机配置中设置了HSTS头时,就会在响应中添加两个HSTS头。

所以在我在.htaccess上设置HSTS之前,如何检查HSTS标头是否已经存在?

3 个答案:

答案 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