- ベストアンサー
ブラウザセッションを自動で切りたい
.htaccessで閲覧制御してるページは、一度認証されるとブラウザを閉じるまで再度認証を求められることはないのですが、それを求めてくるようにしたいのです。 つまり、一度認証してもブラウザの戻るや再読み込みをすると再度認証を求めるようにしたいのです。 JavaScriptでこのようなことはできないでしょうか? お手数ですがよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
JavaScript では、ブラウザがサーバに送るリクエストヘッダ情報は制御出来ないかと思われます。 認証データは、Authorization ヘッダ値として、サーバへのリクエスト時にブラウザが送っています。一度認証を通ったら、全てのブラウザプロセスを終了させないと、戻るボタンやお気に入りから表示させようとした時に、「セッションの残ってるドメイン領域」に対して、自動で勝手に Authorization ヘッダ値を送っています。 よく行われるのは、認証をパスした場合、一意的に生成された Cookie をセットして、それ以降は Cookie と Authorization を併用することです。 「ログアウト」とか意図的にした場合に、その Cookie を破棄する (JavaScript でも当然可) ようにして、次にそのページを表示しようとした際に、Authorization ヘッダ値が渡されたとしても、Cookie が無い場合に、サーバ側から意図的に (認証が通るにも関わらず) 認証ダイアログを出すようにする (HTTP/1.1 401 Authorization Required ステータスヘッダ値と、WWW-Authenticate ヘッダ値の出力、併せてここで妥当な Cookie も発行) を行う事によって、再認証させる事が可能です。 クライアント側で認証関連の制御が行えない分、サーバ側でこういった制御を行わないといけないので、HTTP の知識がないと実装出来ない機能だとお考えください。