私は、仮想ホストがヘッダは、このようなalways
オプションで設定された状態で/etc/apache2/sites-enabled/
で定義されているウェブサイトがあります。Apacheのヘッダー設定の "always"と "onsuccess"の違いは何ですか?
Header always set X-Frame-Options DENY
を私は今はなくせずに、Webサイトのルートフォルダに.htaccess
を使用して、同じヘッダーを設定した場合always
ヘッダーはサーバーの応答で2回返されます。
(とりわけ).htaccess
の設定:
Header set X-Frame-Options DENY
サーバの応答:
HTTP/1.1 200 OK
Date: Mon, 02 May 2016 16:02:29 GMT
Server: Apache/2.4.10 (Debian)
X-Frame-Options: DENY
Cache-Control: no-cache, no-store, must-revalidate, private
Pragma: no-cache
X-XSS-Protection: 1
X-Content-Type-Options: nosniff
Last-Modified: Mon, 02 May 2016 15:03:42 GMT
Accept-Ranges: bytes
Content-Length: 0
X-Frame-Options: DENY
X-XSS-Protection: 1
X-Content-Type-Options: nosniff
Cache-Control: no-cache, no-store, must-revalidate, private
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Apacheのドキュメントはalways
オプションなしでonsuccess
のデフォルト値が使用されていることを言います。しかし、彼らはまた"... onsuccessのデフォルト値は2xxステータスコードの応答にアクションを限定しません..."(http://httpd.apache.org/docs/current/en/mod/mod_headers.html#header)と言っています。
しかし、always
を追加しないと、301sや404sのようなエラーページにはヘッダーが設定されません。一方、always
を追加すると、.htaccess
にデフォルト値(onsuccess
)を使用すると、ヘッダーが2回設定される可能性があります。ドキュメントの状態として:"この条件を両方の条件で繰り返すことは、既存のヘッダーに関して常にonsuccessのスーパーセットではないため、いくつかのシナリオでは意味があります"。 HTTPレスポンスでヘッダーを2回設定することは常に有効というわけではありません。https://stackoverflow.com/a/4371395/641481を参照してください。だから私は自然にそれを避けたい。
私の質問は次のとおりです:正確にonsuccess
(デフォルト値)を使用する必要がありますか?always
?私は、Apacheのドキュメントを数回読んだ後も、これを正確に理解していないことを認めなければなりません。実際には、常にalways
を使用すると、正しい/予想される動作につながるようです。
always
とonsuccess
に設定されていると、Apacheがヘッダーを2回書き込む理由もわかりません。私には間違っているようですが、これには正当な理由が必要です。Apache-devsはHTTPよりもはるかに多くのことを知っていると仮定していますので、;-)
大量のテストの後では、 '' set always''は '' set''を上書きしません。 – user5994461
@ user5994461:あなたは私の言葉を誤解しているようです。最初の段落の最初の文章では、「ヘッダーセットは常に「上書き」しますが、「常に」は「セット」を上書きする」とは言いません。あなたのテストは私の投稿を証明しました。ダウン投票を元に戻してください。 –
正しくない。 Setは常にオーバーライドされず、常にsetをオーバーライドしません。それらは独立して動作し、両方を使用するとhttp応答は2つのヘッダーを取得します。 – user5994461