[解決済み] HTTP 401 - 適切なWWW-Authenticateヘッダーの値は?
質問
私が現在取り組んでいるアプリケーションは、セッションタイムアウトの値を持っています。ユーザーがこの値よりも長い間操作しなかった場合、次に読み込もうとしたページで、ログインするよう促されます。
すべてのリクエストは、AJAX 呼び出しを含む、このメカニズムを通してルーティングされます。もともと私たちはログイン ページで 200 ヘッダーを送信していましたが、200 レスポンスが送信されるとコードが実行され、これらの RPC 呼び出しから返されるほとんどのデータは JSON または評価される生の JavaScript なので、AJAX でいくつかの問題が発生します (聞かないでください :_)。
私たちのJSONパーサーはHTMLログインページを消費しようとしないので、401がより良いことを提案しました... :)
いつ
仕様書を読むと
を読んでいて気づいたのですが
WWW-Authenticate
フィールドも送信しなければならないことに気づきました。
このフィールドにはどのような値を設定すればよいのでしょうか?ウィル
Application Login
で十分でしょうか?
どのように解決するのですか?
HTTP Basic Authenticationを指示すると、次のようなものが返されます。
WWW-Authenticate: Basic realm="myRealm"
ここで
Basic
はスキームであり、残りの部分はそのスキームに大きく依存します。この場合、realm はユーザー ID とパスワードの入力を促す際にユーザーに表示されるリテラルをブラウザに提供するだけです。
しかし、Basic Auth を使用している場合、セッションの有効期限を設定する意味がないため、明らかに Basic を使用していません。何らかのフォームベースの認証を使っているのだと思います。
記憶では、Windows チャレンジレスポンスは異なるスキームと異なる引数を使用します。
トリックは、どのスキームをサポートし、それに対してどのように応答するかを決定するのは、ブラウザ次第であるということです。
フォームベースの認証を使用している場合、私の直感では、200 + 再ログインページのまま、ブラウザは無視するが AJAX が識別できるカスタム ヘッダーを追加することです。
本当に優れたユーザー + AJAX エクスペリエンスのために、セッションが期限切れになったことを発見した AJAX リクエストをスクリプトで保持し、ポップアップで再ログイン要求を出し、成功したらオリジナルの AJAX 要求を再送信して通常通り続行します。
セッションを維持するためにスクリプトを 5 分ごとにサイトにヒットさせるようなごまかしは避けてください。
他の選択肢はAJAXリクエストを燃やすことですが、これは貧弱なユーザーエクスペリエンスです。
関連
-
[解決済み] mp3ダウンロードのレスポンスのためのコンテンツタイプ
-
[解決済み] 403 Forbiddenと401 UnauthorizedのHTTPレスポンスの比較
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
-
[解決済み] httpマルチパートリクエストとは何ですか?
-
[解決済み] HTTPヘッダーの最大値?
-
[解決済み】HTTPヘッダーの "Content-Length "フィールドとは?
-
[解決済み】Axiosが応答ヘッダーフィールドにアクセスできるようになる
-
[解決済み】Access-Control-Allow-Credentialsヘッダーは、具体的に何をするのでしょうか?
-
[解決済み] 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 実装 サイバーパンク風ボタン