8

1 回の応答で複数の永続的なCookieを作成する必要があります。

のようにする

response.addCookie(new Cookie("1","1"));
response.addCookie(new Cookie("2","2"));

2 つの「Set-Cookie」ヘッダーを含む応答を作成します。しかし、彼らはしつこくありません。そのためには「有効期限」の日付が必要です。

expires=Wed, 07-Nov-2012 14:52:08 GMT

javax.servlet.http.Cookie が「有効期限」をサポートしていないことを確認して、以前に使用した

String cookieString="cookieName=content;Path=/;expires=Wed, 07-Nov-2012 14:52:08 GMT;"
response.setHeader("Set-Cookie", cookieString);

これは魅力のように機能しますが、response.setHeader("Set-Cookie",newCookie) を 2 回目に使用すると、最初のものは上書きされます。

それで、質問は、いくつかの同一の名前付きヘッダーを応答に追加する方法があるかどうかです? または、これを行う他の正しい方法がある場合は?

コンマ区切りの Cookie を使用する提案を見たことがありますが、私の経験では、最初の Cookie のみがブラウザーによって読み取られます。

4

1 に答える 1

19

addHeader()の代わりに必要ですsetHeader()。前者はヘッダーを追加し、後者はヘッダーを設定します(したがって古いヘッダーをオーバーライドします)。

response.addHeader("Set-Cookie", cookieString1);
response.addHeader("Set-Cookie", cookieString2);

ただし、適切なsetMaxAge()方法は、Cookieクラスのメソッド(有効期限が秒単位でかかる)を使用addCookie()し、通常の方法を使用することです。

Cookie cookie1 = new Cookie("1","1");
cookie1.setMaxAge(1209600);
response.addCookie(cookie1);
Cookie cookie2 = new Cookie("2","2");
cookie2.setMaxAge(1209600);
response.addCookie(cookie2);
于 2012-10-24T15:40:04.627 に答える