2011-12-07 17 views
1

安全にアクセスできるサーブレットから安全でないクッキーを無効にする/有効期限切れにして、クライアントにリダイレクトを送り返そうとしています。ただし、リダイレクトに従うと、要求には元の有効期限切れで、未検証の(単語である)クッキーが含まれています。リダイレクト応答が動作しないときにクッキーを期限切れにする

ここフローのより詳細な説明は次のとおり
1)クライアントがサーブレットA.
2に支え特定の安全でないURLを要求する)サーブレットAは、クッキーXXがあることを検出し、サーブレットによって裏打ちされ、安全なURLにリダイレクトB
3)サーブレットBはその魔法を行い、MaxAgeを0に設定してCookie XXを無効にし、安全でないURLを介してサーブレットAにリダイレクトします。
4)サーブレットAでは、最初のリクエストと同じようにCookieにアクセスできます。

誰でも手渡しできますか?私は印象に残っていましたが、逆に、リダイレクト応答でクッキーを送り返すと、新しいリクエストが送信される前に処理されているという証拠を見つけることはできません。これは私がアクセスしているすべてのブラウザ(Chrome、FF、IE)で起こっているので、ブラウザのことは考えていません。 HTTPFoxとChromeデベロッパーツールでは、最初のリクエストと2番目のリクエストで元のクッキーが送信され、2番目のリクエストに対するレスポンスに返された無効化されたクッキーと3番目のリクエストで元のクッキーが再び送信されます。私はMaxAgeを0に設定しようとしましたが、クッキーの値を空文字列と別の値に設定しましたが、変更されることはありません。すべてのサーバーサイドコードは、重要な場合はJavaで実行されます。

助けを非常に感謝します。

+1

http://stackoverflow.com/questions/890935/how-do-you-remove-a-cookie-in-a-java-servletに関連する – Gray

答えて

0

これは私の見解です。サーブレットBがCookie XXを無効にすると、Cookieのパスも元のものとは別のものに設定されます。実際にはCookie XX-Bが作成され、元のCookie XXには影響しませんでした。私のクッキーのパスが同じであることを確認してください。

0

無効にされたCookieのドメインとパスが元のCookieと同じであることを確認しましたか?

また、機密性の高いCookieを処理するより良い方法は、元のCookieに 'secure'フラグを設定することです。そうすれば、ブラウザーは安全でない接続でCookieを送信しないようになります。

関連する問題