2016-05-02 13 views
3

私は、仮想ホストがヘッダは、このような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を使用すると、正しい/予想される動作につながるようです。

alwaysonsuccessに設定されていると、Apacheがヘッダーを2回書き込む理由もわかりません。私には間違っているようですが、これには正当な理由が必要です。Apache-devsはHTTPよりもはるかに多くのことを知っていると仮定していますので、;-)

答えて

-1

これは部分的な答えです。 onsuccess属性。これは、Ubuntu 14 OSで動作するApache 2.4.7を使用した経験に基づいています。それがあなたに役立つことを願っています。

純粋setパラメータは、属性なしで、Headerディレクティブに配信のみであることをHeader setに引数を強制することにより、任意のalways属性を上書きします。同じディレクティブがディレクトリ、つまりファイルシステムベースの.htaccessファイルにある場合、そのディレクトリに関連する仮想ホスト定義ファイルに記述された同じディレクティブよりも優先されます。属性alwaysが付加的に指定されていると、同じディレクティブの上書きが上書き/置き換えられるのではなく、サーバーの回答に追加されるという効果があります。

残念ながら私が今調査する時間がないonsuccess属性は、おそらくalways属性と同様に扱われる可能性があります。

+0

大量のテストの後では、 '' set always''は '' set''を上書きしません。 – user5994461

+0

@ user5994461:あなたは私の言葉を誤解しているようです。最初の段落の最初の文章では、「ヘッダーセットは常に「上書き」しますが、「常に」は「セット」を上書きする」とは言いません。あなたのテストは私の投稿を証明しました。ダウン投票を元に戻してください。 –

+0

正しくない。 Setは常にオーバーライドされず、常にsetをオーバーライドしません。それらは独立して動作し、両方を使用するとhttp応答は2つのヘッダーを取得します。 – user5994461

関連する問題