2017-11-01 9 views
0

複数のサイトで使用されている共通の.htaccessにHSTSを設定しました。htaccessのHSTSヘッダーが既に存在しない場合に設定します。

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

しかし、サイトがすでに仮想ホスト構成からHSTSヘッダーを設定している場合、応答に2つのHSTSヘッダーが追加されます。

.htaccessでHSTSを設定する前に、HSTSヘッダーが既に存在するかどうかを確認するにはどうすればよいですか?

答えて

1

Header setで問題ありません。 Header addを使用した場合は問題が発生します。

追加 :レスポンスヘッダこのヘッダが既に存在する場合でも、ヘッダの既存のセットに追加されます。これにより、同じ名前の2つ(またはそれ以上)のヘッダーが作成される可能性があります。これは予期せぬ の結果につながる可能性があり、一般的にset、appendまたはmergeは の代わりに使用する必要があります。

セット :応答ヘッダーが設定され、以前のヘッダーがこの名前で置き換えられます。値は書式文字列です。

https://httpd.apache.org/docs/current/en/mod/mod_headers.html

1

また@Croisesが報告されているように、それはデフォルトでは単に上書きする必要がありますが、私の場合には、それは使用していた仮想ホストのコンフィグで設定されたヘッダが判明setifempty

Header always setifempty Strict-Transport-Security "max-age=31536000" env=HTTPS 
+0

ありがとう - しかし、SetIfEmptyは2.4.7以降で利用可能で、expr = 2.4.10以降で利用可能です.' – Sushil

0

を使用alwaysキーワード.htaccessによって設定されたヘッダーも追加されました。

setifemptyを使用することもできますが、私の場合、Apacheは最新ではありませんでした。(これは2.4.7以降でのみサポートされています) だから私は以下のように動作させる必要がありました。

Header always unset Strict-Transport-Security 
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS 
関連する問題