7

全て、

フォーラムに関連するトピックがありますが、この問題に関する明確な解決策はありません。javax.servlet.http.Cookie に有効期限を設定しようとしています (ブラウザー セッション間で持続するように)。コード:

public void respond(HttpServletRequest req, HttpServletResponse resp) {
    int expiration = 3600;
    Cookie cookie = new Cookie("TestCookie", "xyz");
    cookie.setDomain("");
    cookie.setVersion(0);
    cookie.setPath("/");
    cookie.setMaxAge(expiration);
    cookie.setSecure(false);
    resp.addCookie(cookie);
}

IE 開発者ツールをチェックインしても、この Cookie が設定されていません。インターネットで検索すると、IE は Max-Age を考慮せず、Expires でのみ機能するという手がかりが得られました。これが IE で機能しない場合、IE で機能するように永続的な Cookie の HTTP 応答ヘッダーを設定する実証済みの方法はありますか?

PS: これは、他のすべてのブラウザーで問題なく動作します。

有効期限属性を持つ Cookie の文字列を作成してみました。IE はそれを作成することに成功しましたが、ドメイン (デフォルト - "") を失い、".com" を表示し、それを永続的な Cookie ではなくセッション Cookie に変えました。これも、他のすべてのブラウザーで正常に機能します。

助けてください。ありがとう。

4

3 に答える 3

4

IE9 を使用してHttpOnly、後続の投稿で Cookie 値をエコーするために必要な属性であることがわかりました。

Set-Cookie: autologCk1=ABCD; Path=/autolog/; HttpOnly
于 2012-09-12T18:19:00.473 に答える
1

では Cookie に属性をjavax.servlet.http.Cookie設定できないため、手動で設定する必要があります。Expires

また、次のRFC-2616 Full Date セクション (詳細情報Expires)の形式で指定する必要があることも知っておく必要があります。Wdy, DD Mon YYYY HH:MM:SS GMT

Java では、次のように実行できます。

public void respond(HttpServletRequest req, HttpServletResponse resp) {
    int expiration = 3600;
    StringBuilder cookie = new StringBuilder("TestCookie=xyz; ");

    DateFormat df = new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss 'GMT'", Locale.US);
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 3600);
    cookie.append("Expires=" + df.format(cal.getTime()) + "; ");

    cookie.append("Domain=; ");
    cookie.append("Version=0; ");
    cookie.append("Path=/; ");
    cookie.append("Max-Age=" + expiration + "; ");
    cookie.append("Secure; ");
    resp.setHeader("Set-Cookie", cookie.toString());
}
于 2012-01-17T17:38:50.197 に答える
1

答えは、IE のサーブレットからの永続的な Cookie にあります

あなたのケースは、同じ問題の別のフレーバーである可能性があります。つまり、ドメインの前に「。」を付けることです。(これはバージョン 1 の Cookie 機能であると確信しています)、Java スタック内の何かがバージョン 1 の Cookie であると判断し (IE では認識されず、IE8 でさえ保持されません)、その Cookie 形式を送信します。

または、その答えが示唆するように、Cookie の値に認識できない文字が含まれていますか?

于 2009-12-10T14:43:46.527 に答える