2008-10-07 5 views
10

Ich kann nicht Cookie maxage abrufen es gibt immer -1Plätzchen getMaxAge

Erstellen Cookie:

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

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

ich immer bin immer age = -1

auch wenn ich check in firefox Cookie Ablauf sehe ich seltsames Datum.

Thx

+0

Wie sind Sie an diesem Problem vorbeigekommen? Ich kämpfe mit genau dem gleichen Problem und sehe keine Antworten. –

+0

Antwort von @Bruno De Fraine ist eine gültige, lesen Sie bitte, dass in unter Thread – Jeevanantham

Antwort

1

Die API sagt, dass -1 bedeutet, bis Browser ausgeführt wird:

Gibt das maximale Alter des Cookies in Sekunden angegeben, standardmäßig -1 das Cookie angibt, bis wird anhalten browser shutdown

Was ist der Wert von EXPIRATION_TIME konstant?

+0

Sie verwenden nur die Parameter Cookie-Alter, wenn Sie ein Cookie zum Senden in einem Antwortobjekt erstellen.Die API bezieht sich auf die Erstellung eines Cookies. Dasselbe "Cookie" -Objekt wird verwendet, um auch Daten einzufügen, die in der Anfrage ankommen, aber die Anfrage sendet keine "Alter" -Parameter. Schade, es gibt keine verschiedenen Objekte für SET und GET (um die verschiedenen HTTP-Header zu cookietieren: und Set-Cookie. – ChrisCantrell

0

Der Wert kann vom Browser geändert werden.

Sie erstellen einen Cookie und möchten ein maximales Alter festlegen. Der Cookie wird an den Browser gesendet. Der Browser lehnt das Cookie möglicherweise ab oder ignoriert ein maximales Alter für seine Richtlinie. Dieser modifizierte Cookie wird an Ihre Anwendung gesendet.

Überprüfen Sie Ihre Browsereinstellungen.

0

Nur für grins, können Sie den Wert des Cookies aus dem Browser mit Javascript abrufen?

Können Sie auch einen Filter vor Ihr Servlet/Jsp setzen, so dass Sie den Wert des Cookies überprüfen können, nachdem das Servlet/Jsp es gesetzt hat?

12

Wenn ein Browser ein Cookie an den Ursprungsserver zurücksendet, enthält er kein Alter. Daher ist es logisch, dass Ihr "recovery" -Code oben kein maximales Alter erhält: Er ist nicht in der Anfrage enthalten.

Wenn der Cookie vom Server empfangen wird, verwendet der Browser den Parameter max age, um zu bestimmen, wie lange der Cookie aufbewahrt werden soll. das Alter wird nie an den Server zurückgemeldet, ein abgelaufener Cookie wird einfach verworfen. Wenn Sie bei der Verarbeitung einer Anfrage das Alter des Cookies verlängern möchten, schließen Sie das Cookie in der Antwort erneut ein.

Weitere Informationen finden Sie im Abschnitt "Senden von Cookies an den Origin Server" unter RFC.

+2

Mit anderen Worten, der Browser teilt das maxAge nicht mit dir. Du wirst nicht kennenlernen. Es tut uns leid. –

Verwandte Themen