12

Cookieの最大値を取得できません。常に-1が返されます。

クッキーの作成:

Cookie securityCookie = new Cookie("sec", "somevalue");
securityCookie.setMaxAge(EXPIRATION_TIME);

Cookieを取得する:

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for(int i=0; i<cookies.length; i++) {
        Cookie cookie = cookies[i];
        if ("sec".equals(cookie.getName())){
            int age = cookie.getMaxAge();
        }
    }
}

私はいつも年齢を取得しています=-1

また、Firefox Cookieの有効期限をチェックインすると、奇妙な日付が表示されます。

どうも

4

4 に答える 4

14

ブラウザーが Cookie を元のサーバーに送り返すとき、年齢は含まれません。したがって、上記の「取得」コードが最大年齢を受け取らないのは論理的です。これはリクエストに含まれていません。

サーバーから Cookie を受信すると、ブラウザは max age パラメータを使用して、Cookie を保持する期間を決定します。年齢がサーバーに返されることはなく、期限切れの Cookie は単に破棄されます。リクエストを処理するときに、Cookie の有効期間を更新する場合は、レスポンスに Cookie を再度含めます。

RFCの「Sending Cookies to the Origin Server」セクションも参照してください。

于 2008-10-09T12:32:53.593 に答える
1

API は、-1 はブラウザーが実行されるまでを意味すると述べています。

秒単位で指定された Cookie の最大有効期間を返します. デフォルトでは -1 は Cookie がブラウザのシャットダウンまで存続することを示します.

EXPIRATION_TIME 定数の値は?

于 2008-10-07T09:47:21.807 に答える
0

にやにや笑いながら、javascript を使用してブラウザから Cookie の値を取得できますか?

また、サーブレット/jspが設定した後にCookieの値を確認できるように、サーブレット/jspの前にフィルターを配置できますか?

于 2008-10-07T15:03:05.070 に答える
0

値はブラウザによって変更される場合があります。

Cookie を作成し、最大年齢を設定したいと考えています。Cookie がブラウザに送信されます。ブラウザは、Cookie を拒否するか、ポリシーに対して長すぎる最大経過時間を無視する場合があります。この変更された Cookie がアプリケーションに送り返されます。

ブラウザの設定を確認してください。

于 2008-10-07T11:00:03.017 に答える