何?
公開ページでログインフォームを要求する場合、あなたが望む結果を得るので、200のステータスコードです:
GET /login -> 200
あなたが「didnのHTTPレベルの認証を必要とするページを要求あなたが既に持っている、認証はクッキーベースのセッションのとき
GET /secured -> 401 with WWW-Authenticate header
:T開始(基本的なHTTP、SSL証明書など)は、ブラウザ自体を伝える必要があるアプリケーションは、それはあなたのために、この認証を開始する必要があることクッキー(もしそうでなければ、あなたは1つはページを要求するときにクッキーヘッダーが設定されています)、このCookieはあなたが/secured
というURIにアクセスすることを許可されているとは言いません。したがって、このURIにアクセスしようとすると、「403禁じられた」状態になるはずです。そして、「ログイン」アクションが悪いの資格情報としてちょうどこのクッキーのアプリケーションの許可のアクセスを行うためのPOSTリクエストを使用してアプリケーションの状態を変更する以上のものではありませんので...
ログイン:
GET /secured -> 403 with HTML login form (with action="/login")
POST /login -> 403 with HTML login form, displaying errors
良い資格情報ではなく、十分な権限を持つログイン:良い資格情報との十分な権限を持つ中
GET /secured -> 403 with HTML login form (with action="/login")
POST /login -> 403 with HTML page saying "I know you are John, but you can't get this page"
ログイン:
GET /secured -> 403 with HTML login form (with action="/login")
POST /login -> 302 (temporary redirection to /secured)
GET /secured -> 200
リダイレクトとは対照的に、ログインフォームで直接応答することは確かにオプションであり、実際にはより意味をなさないかもしれません。 – igorw
これは、HTTPが認証と認可を混在させる傾向があるため、最も実用的なソリューションかもしれません。失敗した認証および認証の試行のために –
401が発行されます。失敗したログインにも使用できます。一方、データの完全な制限には403が使用されます。認証/認可は不要で実行されます。 –