2011-08-15 11 views

答えて

4

サーバーが送信するヘッダーは、成功または失敗時に200 OKまたは401拒否ステータスコードです。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html セクション10.4.2 401これについては、無許可を参照してください。

401を送信すると、サーバーが送信しなければならない

WWW認証=「WWW認証」「:」1つの#挑戦

認証するために使用すべきかの方式を示します。

このためhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html14.47 WWW認証を参照してください。

1

HTTP/1.0 401 Unauthorizedのみです。

最近、私はこの「認証パターン」を開発しました。初めてページにアクセスし、401とログイン画面が表示されます。正しいログインデータを入力するとすぐに200が届きます。セッションが終了するか、ログアウトをクリックすると、401とログイン画面が再び表示されます。ログイン画面は常に401、他のすべてのページ200です。

1

これは、「ログイン」とは何を意味するのか、おそらくログイン/ログアウト/承認がサーバーによってどのように処理されるかによっても異なります。

通常、「ログインする」という表現はセッションに関連しています。 1つは「ログイン」し、何を行う必要があり、次に「ログアウトする」。サーバはセッション情報を保存し、クッキーのセッションIDをクライアントに送信し、クライアントはクッキーを戻して、セッションが進行中であることをサーバに通知します。セッション変数内で変数が変化し、その状態はクライアントからの呼び出しの間も持続します。

直感的に言えば、セッションを開始すると「承認済み」(401)というレスポンスとともに、「承認済み」の応答があるはずです。

ただし、HTTPは状態のないプロトコルです。状態についてはわかりませんが、要求が許可されているかどうかについてのみです。そのため、状態401はありますが、特定の「許可」ステータスコードはありません(要求が許可されていない場合は暗黙的に許可されるため)。

(PHPのsession_start()のような構造を使用せずに)HTTPレベルでセッションを処理する気持ちを持たせるには、リクエストごとに認証資格情報を送信する必要があります。これは、例えば、.htaccessファイルを使用してフォルダを保護する場合に起こります。パスワードダイアログにユーザー名とパスワードを入力した後、認証レルム内でアクセスするたびにこれらのパスワードが送信されます。 「セッション」が起こっているという錯覚がありますが、実際はすべてのリクエストでユーザー名とパスワードが送信されます。

関連する問題