2013-01-31 6 views
6

Sto tentando di impostare un cookie con valore n. 4? Wn5pZ1JwQnlLEGRJAgB4WQU% 3D nella risposta servlet.Cookie impostato dal server applicazioni con doppie virgolette

Ma quando ho impostato il cookie sul browser viene restituito con le virgolette che circondano in questo modo:

"? Sconosciuta # 4 Wn5pZ1JwQnlLEGRJAgB4WQU% 3D".

Perché sta succedendo? Stiamo usando Jetty come server delle applicazioni.

io metterò codice che ho scritto

String cookieValue = "unkown#4?Wn5pZ1JwQnlLEGRJAgB4WQU%3D"; 
Cookie zedoCookie = new Cookie("cookiename", cookieValue); 
zedoCookie.setMaxAge(31536000); // this is one year duration. 
zedoCookie.setDomain("somedomain.com"); 
zedoCookie.setPath("/"); 
response.addCookie(zedoCookie); 

Qualcuno può mettere un po 'di luce su questo?

Ho già dato un'occhiata a this. Ma non sembra affrontare il mio problema.

risposta

8

Sembra Jetty 8 (o precedente) tratta i seguenti caratteri non consentito in Cookies: "\\n\r\t\f\b%+ ;= (HttpFields ->__COOKIE_DELIM). Se uno di questi caratteri è contenuto nel valore del cookie, il valore sarà racchiuso tra virgolette nell'header HTTP. La codifica dell'URL non risolve il problema, dal momento che al suo interno sarà ancora presente il carattere %. Per me sembra un insetto. Ho inviato una domanda allo Jetty mailing list. C'è anche un altro post sulla mailing list, che spiega perché la versione dei cookie viene sollevata nella versione Jetty 9.

+0

+1 Grazie per questo. Avevo convertito '+' -> '-', '/' -> '.', E '=' -> '_' per far sì che il mio cookie di base64 venisse memorizzato senza spazi. – Gray

Problemi correlati