2012-02-17 19 views
5

setMaxAge ma kontrolować maksymalny wiek cookie, więc jeśli moja intencja jest dosłownie ustawić maksymalny wiek możliwe logiczną rzeczą robiłbym:jaka jest umowa z plikiem Cookie.setMaxAge (Integer.MAX_VALUE)?

cookie.setMaxAge(Integer.MAX_VALUE); 

Jednak to powoduje w żadnym Expires w nagłówku HTTP cookies w ogóle testuję go na serwerze WebSphere 7. Ustawienie go na około 1 rok mierzony w sekundach działa dobrze.

Dlaczego tak się dzieje?

PS Właśnie przetestowałem na Tomcat7 - Integer.MAX_VALUE wyniki w Max-Age=2147483647; Expires=Wed, 06-Mar-2080 21:30:32 GMT, więc musi być coś nie tak z WebSphere.

+0

http://www.javaworld.com/community/node/3673 – NINCOMPOOP

+0

Tak, to mój artykuł. Ale nie ma w nim nic na temat Integer.MAX_VALUE. –

+0

Szybki test, działający zgodnie z oczekiwaniami w produkcie WebSphere 6.1. Nie mam środowiska WebSphere 7, na którym można przetestować. Czy przetestowałeś inne wartości wygaśnięcia? – dbreaux

Odpowiedz

2

zamiast ustawić maksymalny wiek pliku cookie, ta metoda setMaxAge dodaje czas parametru int do bieżącej daty/godziny serwera i umieszcza ta nowa wartość daty/czasu do pliku cookie jako czas wygaśnięcia. Później, gdy plik cookie zostanie wysłany do przeglądarki, data wygaśnięcia jest porównywana z datą/czasem KLIENTA, a plik cookie wygasa, jeśli data jego wygaśnięcia minęła.

więc zamiast używać setMaxAge (int) należy użyć metody z datą i godziną.

+2

Czy zdajesz sobie sprawę, że skopiowałeś i wkleiłeś tekst z artykułu napisanego przez @Oleg, aby odpowiedzieć na pytanie, które zadał? http://www.javaworld.com/article/2073096/don-t-trust-cookie-setmaxage.html – Edd

Powiązane problemy