2012-03-23 3 views
1

Iは、クッキーを設定し、リダイレクトするために、次のコードを使用しています。addCookie付き応答()及び(リダイレクトを送信する)

String level=(String) request.getAttribute("level"); 

if(level!=null) 
{ 
    Cookie cookie=new Cookie("level",level); 
    cookie.setMaxAge(-1); 
    cookie.setPath("http://localhost:8080/saml"); 

    response.addCookie(cookie); 

    response.sendRedirect("http://​localhost:8080/saml/someservices.jsp"); 
} 


このコードは正常に動作します。しかし、私はどのように知りたいですか? jspエンジンがjspコードを解析するとき、最初にaddCookieとsendリダイレクトが発生するためです。クッキーをすぐに追加しますか?response.addCookie(cookie);?私はそれを最初にsendRedirect()、その後addCookie()ラウンドすなわち、他の方法を与えますか? JSPエンジンはこれをどのように見ますか?

答えて

6

クッキーはHTTP応答ヘッダに添加されます。リダイレクトはヘッダーにも指定されています。リダイレクトを送信すると、両方がクライアントに返されます。あなたはaddCookiesendRedirectの順序を逆にした場合

、それはまだ動作かもしれませんが、基礎となるサーブレット・コンテナ内のイベントの正確な配列に依存します。しかし、私はそれをお勧めしません。

+1

第2の方法doesntの仕事。ありがとうございます – suraj

-3

sendRedirect()メソッドが新しい要求を作成し、このプロセスで以前の応答のすべてがリセットされ、すべてのクッキーが失われることを意味するため、コードが機能すると驚きます。新しいリソースhttp://​localhost:8080/saml/someservices.jspとそれに関連するサーブレット(存在する場合)は、「レベル」と呼ばれるクッキーをフェッチできません。

+3

あなたの "驚き"は間違っています。確かにHTTP仕様に従って動作します。 – BalusC

+0

私は(MSIEがクッキーを受信するが、リダイレクト要求でそれを送信していない)MSIE9の下で、この問題を持っています。私は、コンパクトプライバシーポリシーをP3Pヘッダを追加することによってそれを解決し、http://stackoverflow.com/questions/7384502/ie9-loses-cookies-after-redirectを参照してください –

関連する問題