0

PHP からカスタム値「Application」を使用して 401 ヘッダーと WWW-Authenticate ヘッダーを発行しています。カスタム値は、WWW-Authenticate ヘッダーが「Basic」に設定されている場合と同様に、ブラウザが Apache 認証ポップアップ ウィンドウをロードするのを防ぎます。アプリケーションが認証を処理するため、これは私のアプリケーションにとって望ましい動作です。これはすべてうまく機能し、403 ヘッダーを発行するよりも 401 ステータス コードの意図に従っているようです。

Apache 構成に既に Apache auth 設定があるサーバーでこれを実行すると、問題が発生します。401 ヘッダーにより、Apache は、PHP から発行した WWW-Authenticate ヘッダーではなく、Apache 構成に示されている WWW-Authenticate メソッドを送信します。したがって、応答ヘッダーは、アプリケーションから発行された「アプリケーション」ではなく、Apache 構成のように「基本」になります。これにより、無限の認証ループが発生し、Apache 認証ポップアップが表示され続けます。

これに対する私の解決策は、今のところ 403 ヘッダーを発行することですが、そうするのは正しくないようです。403 は、ユーザーが認証されても、要求が許可されないことを示します。

アプリケーション レベルのログインに 401 ヘッダーを使用するべきではありませんか? HTTP認証のみを目的としているようです。そうでない場合、403 はこれに本当に適していますか? いろいろ調べましたが、明確な基準がわかりません。

4

1 に答える 1

0

Apache ヘッダーの設定を解除するオプションがあります(PHP でのヘッダーの設定とは動作が異なります)。

したがって、.htaccess に追加して、PHP ファイルのヘッダーを削除することができます。

<FilesMatch "\.(php)$">
Header unset WWW-Authenticate
</FilesMatch>
于 2012-12-04T04:13:11.283 に答える