1

ブラウザーからいくつかの JSESSIONID Cookie を削除しようとしている次のコードがあります。

String[] cookieList = "/App1/,/App2/,/App3/".split(",");



for (int i = 0; i < cookieList.length; i++) {

     String cookiePathString = cookieList[i];
     response.setContentType("text/html");
     Cookie cookieToKill = new Cookie("JSESSIONID", "No Data");
     cookieToKill.setDomain(getCookieDomainName("myDomain.com"));
     cookieToKill.setMaxAge(0);
     cookieToKill.setPath(cookiePathString);
     cookieToKill.setComment("EXPIRING COOKIE at " + System.currentTimeMillis());
     response.addCookie(cookieToKill);
}

コードは Firefox で正常に動作し、JSESSIONID を削除します。Chrome と IE ではそうではありません。これらのセッション Cookie を IE および Chrome から期限切れにするにはどうすればよいですか?

これは、Java 7 を実行している Tomcat 上の Spring MVC アプリケーションで実行されています。

4

2 に答える 2

1

クッキーは完全に台無しです。

サーバーのベスト プラクティス:

  1. Set-Cookie2 ではなく、Set-Cookie を使用してください。
  2. 複数の Cookie がある場合は、Cookie ごとに個別の Set-Cookie ヘッダーを使用します。
  3. Max-Age ではなく Expires を使用します。
  4. 日付形式を使用します。Sun, 06 Nov 1994 08:49:37 GMT

例えば:

Set-Cookie: JSESSIONID=NO_DATA; Path=/App1/; Domain=myDomain.com; Expires=Thu, 01 Jan 1970 00:00:00 GMT

お勧めできること:

  1. Cookie 値にスペースを入れないでください。
  2. 電話cookie.setVersion(0);

それでも問題が解決しない場合は、クラスを忘れてCookie、http ヘッダーを手動で設定してみてください

response.addHeader("Set-Cookie", 
    "JSESSIONID=NO_DATA; Path=/App1/; Domain=myDomain.com; Expires=Thu, 01 Jan 1970 00:00:00 GMT");
于 2012-12-13T23:34:31.680 に答える
0

この SO の質問は、解決策が を呼び出すことである可能性があることを示していますsetHttpOnly(true)

于 2012-12-13T22:02:26.207 に答える