Tomcat: lunghezza Cookies
Domanda
Sto creando e allegando una cucina per la mia applicazione con alcune informazioni utili.
Ma questa informazione non è accessibile dopo.
Il problema è che quando provo a collegare troppe informazioni, il mio cookie non è passato avanti. Quando provo a collegare alcune informazioni che è OK.
Le mie domande:
- Qual è la lunghezza massima per i valori di biscotti?
- Se si tratta di un bug, non v'è alcuna soluzione per Tomcat 5.5?
Sto creando il mio biscotto utilizzando il seguente codice:
Cookie cookie = new Cookie(key, value);
cookie.setPath("/");
response.addCookie(cookie);
E per il recupero il mio biscotto, sto usando questo codice:
private static String getCookieValue(HttpServletRequest request, String name) {
boolean found = false;
String result = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
int i = 0;
while (!found && i < cookies.length) {
if (cookies[i].getName().equals(name)) {
found = true;
result = cookies[i].getValue();
}
i++;
}
}
return (result);
}
Soluzione
Per quanto riguarda 1) "Qual è la lunghezza massima per i valori di biscotti?"
Non c'è massima forzata, solo una raccomandazione in RFC 2109 :
I programmi utente creati per scopi specifici o per capacità limitata dispositivi dovrebbero fornire almeno 20 cookie di 4096 byte, per garantire che l'utente può interagire con un server di origine basata sulla sessione.
Tenete a mente, che i cookie verranno trasmessi ogni volta che gli endpoint comunicano.
Per quanto riguarda la memorizzazione di valori più grandi sul lato client, dojox.storage
è entrato nella mia mente (anche se questo è javaScript, mostra loro approccio a questo problema generale). Essi astrarre i vari modi incompatibili per memorizzare grandi quantità di dati all'interno del client - per esempio utilizzando uno dei disponibili
- AirDBStorageProvider,
- AirEncryptedLocalStorageProvider,
- AirFileStorageProvider,
- FlashStorageProvider,
- GearsStorageProvider,
- WhatWGStorageProvider.
Se avete il controllo sui clienti, si potrebbe andare via HTML5 con localStorage , che prevede un massimo di 5 MB di spazio client locale.
E un idea finale: Comprimere o codificare i dati memorizzati, o forse divisi in su, in modo che il server possa assumere alcuni dei valori effettivi, mentre si memorizzano solo le chiavi nel client (che a sua volta aggiungere più di connessione in testa a tutta la cosa, ovviamente).