web-dev-qa-db-ja.com

Apache 2.4:<Location>で設定されていないヘッダーが機能しない

Typo3で生成されたウェブサイトを提供するためにApache2.4を実行しています。

一般的には、すべてのリクエストに対してX-Frame-Options SAMEORIGINヘッダーが必要です。

1つの例外を除いて。特定のURLの場合、このヘッダーは別のドメインのiFrame内で使用する必要があるため、設定を解除する必要があります。

だから私はこのようなものを追加しました:

Header always set X-Frame-Options SAMEORIGIN

<Location /anotherURL>
    Header always unset X-Frame-Options
</Location>`

指定されたURL https://www.example.com/をリクエストしようとすると、レスポンスにX-Frame-Options- Headerが表示されますが、https://www.example.com/anotherURLを使用すると、このヘッダーはまだ存在します。

LocationディレクティブにRequire all deniedを追加して、Locationディレクティブが実際に処理されることを確認しました。これがアクティブになっていると、予想どおり、URL /anotherURLへのアクセスが拒否されます。

場所を/anotherURLから/typo3に変更すると、未設定は期待どおりに機能します。

これら2つのURLの唯一の違いは、/typo3がhtdocsの下のディレクトリ構造に存在するのに対し、/anotherURLはTypo3によって処理されるURLであるということです。

私の質問は、Apacheがヘッダーのunsetコマンドを無視するのはなぜですか? Apachesの観点からは、Typo3が何をしているのかを知らないはずです。いったん応答ヘッダーが生成されると、Location-Directiveが一致するはずです(これは明らかにそうです)、内部のコマンドを処理します。

HTTPヘッダーの設定解除に関する問題に関する他のいくつかの質問を参照しましたが、私の特定の問題を解決する提案はありません。

3
Tobias Wolf

これを試して:

<Location /anotherURL>
    Header always unset X-Frame-Options
    Header unset X-Frame-Options
</Location>

Jbossバックエンドでヘッダーの設定を解除せずに上記と同じ問題を修正しました。理由をもう一度思い出せません(alwaysキーワードを含める場合の処理​​の順序と関係があります)。

1
Barry Pollard