2008-10-07 6 views
10

nie mogę pobierać plików cookie maxage zawsze zwraca -1Cookie getMaxAge

Tworzenie ciasteczko:

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

Pobierz 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(); 
     } 
    } 
} 

zawsze jestem coraz wiek = -1

także, gdy sprawdzam w expiration firefox widzę dziwną datę.

Thx

+0

Jak udało Ci się uniknąć tego problemu? Walczę z tym samym problemem i nie widzę żadnych odpowiedzi. –

+0

Odpowiedź @Bruno De Fraine jest ważna, proszę przeczytać w poniższym wątku – Jeevanantham

Odpowiedz

1

API mówi, że -1 oznacza aż przeglądarka jest uruchomiony:

Zwraca maksymalny wiek cookie, określony w sekundach, domyślnie -1 wskazuje cookie będzie trwać aż do zamknięcie przeglądarki:

Jaka jest stała EXPIRATION_TIME?

+0

Parametr wieku pliku cookie jest używany tylko podczas tworzenia pliku cookie do wysłania obiektu odpowiedzi. API odnosi się do utworzenia pliku cookie. Ten sam obiekt "Cookie" jest używany do enkapsulacji danych przychodzących w żądaniu, ale żądanie nie wysyła żadnych parametrów "wieku". Szkoda, że ​​nie ma różnych obiektów dla SET i GET (do równoległych różnych nagłówków HTTP Cookie: i Set-Cookie) – ChrisCantrell

0

Wartość może być modyfikowana przez przeglądarkę.

Tworzysz plik cookie i chcesz ustawić maksymalny wiek. Plik cookie jest wysyłany do przeglądarki. Przeglądarka może odrzucić plik cookie lub zignorować maksymalny wiek zbyt długi dla swojej polityki. Ten zmodyfikowany plik cookie jest wysyłany z powrotem do aplikacji.

Sprawdź ustawienia przeglądarki.

0

Po prostu dla uśmiechu, możesz odzyskać wartość cookie z przeglądarki przy użyciu javascript?

Można również umieścić filtr przed serwletem/jsp, aby można było sprawdzić wartość pliku cookie po ustawieniu przez serwlet/jsp?

12

Gdy przeglądarka wysyła plik cookie z powrotem na serwer źródłowy, nie obejmuje żadnego wieku. Logiczne jest więc, że powyższy kod "pobierania" nie ma maksymalnego wieku: nie jest zawarty w żądaniu.

Po otrzymaniu cookie z serwera, przeglądarka używa parametru maksymalnego wieku, aby określić, jak długo ciasteczko powinno być przechowywane; wiek nigdy nie jest przekazywany z powrotem do serwera, a wygasły plik cookie jest po prostu odrzucany. Podczas przetwarzania żądania, jeśli chcesz odnowić wiek pliku cookie, ponownie dołącz plik cookie do odpowiedzi.

Zobacz także sekcję "Wysyłanie plików cookie na serwer Origin" pod numerem RFC.

+2

Innymi słowy, przeglądarka nie udostępnia Ci wartości maxAge. Przepraszam. –