[解決済み] セッションがタイムアウトしたことをクライアントに伝えるには、どのような http ステータスコードを使用することになっていますか?
質問
ウェブページでは、YUIコネクションマネージャ/データソースを使用してサーバーにAJAXリクエストを送信していますが、セッション(ユーザーが認証されたかどうかの情報を含む)がすでにタイムアウトしている場合、認証されたユーザーのみが閲覧できるこれらのAjax応答はhttpステータスコードを返し、セッションがすでにタイムアウトしたことをクライアントに伝え、クライアントは単にログインページにリダイレクトするか、セッションを延長したいかどうかを尋ねるはずです。
私の質問は、この状況で、セッションがタイムアウトしたことをクライアントに伝えるのに、どのような http ステータス コードが最も適切なのか、ということです。
どのように解決するのですか?
私が提案できる最善の方法は、HTTP 401 ステータスコードに WWW-Authenticate ヘッダを付けることです。
の問題は 403 リクエストの問題点は RFC 2616 は "Authorization will not help and the request SHOULD NOT be repeated." (つまり、認証されているかどうかは関係なく、そのリソースへのアクセスを得ることはできない) と述べています。
の問題は 401 リクエストの問題は、それが "MUST include a WWW-Authenticate header field" と述べていることです。そのため は、誰かが指摘したように のように、WWW-Authenticate ヘッダーにカスタム値を使用することは、仕様違反ではないようです。
に何の理由も見当たりません。 RFC 2617 HTTP 401 ステータスとカスタムの WWW-Authenticate ヘッダを組み合わせても問題ない理由が見当たりません。
WWW-Authenticate: MyAuthScheme realm="http://example.com"
この oAuth仕様 は実際にこれを推奨しているようです (ただし、私の目には RFC の奇妙な解釈として映っています)。
WWW-Authenticate: OAuth realm="http://server.example.com/"
これは RFC で特に SANCTIONED になっているようには見えませんが、実際には RFC で禁止されているようには見えません (MUST や MUST NOT、SHOULD や SHOULD NOT のどの条件とも衝突しないように見えます)。
タイムアウトや、CSRF トークンが無効であることなどについて、より具体的な HTTP ステータス コードがあれば、この点が明確になるのにと思います。
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】SSLピア証明書またはSSHリモートキーがOKでなかった
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] REST APIサービスが検証に失敗した場合に返すべき適切なHTTPステータスコードは何ですか?
-
[解決済み] [Solved] リクエストに必須パラメータがない場合、どのようなHTTPステータスレスポンスコードを使用すればよいですか?
-
[解決済み] ログインページにリダイレクトする際の正しいHTTPステータスコードは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「初期通信パケットの読み込み」でMySQLサーバーに接続できなくなり、システムエラーになる。0
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。
-
[解決済み] PHP 未定義関数への呼び出し