我正在为我的应用程序创建并附加一个 cooking ,其中包含一些有用的信息。
但此后将无法访问此信息。
问题是,当我尝试附加太多信息时,我的 cookie 不会被转发。当我尝试附加一些信息时就可以了。
我的问题:
- Cookie 值的最大长度是多少?
- 如果这是一个错误,Tomcat 5.5 有解决方法吗?
我正在使用以下代码创建 cookie:
Cookie cookie = new Cookie(key, value);
cookie.setPath("/");
response.addCookie(cookie);
为了检索我的 cookie,我使用以下代码:
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);
}
最佳答案
关于 1)“cookie 值的最大长度是多少?”
没有强制的最大值,只是 RFC 2109 中的建议:
User agents created for specific purposes or for limited-capacity devices should provide at least 20 cookies of 4096 bytes, to ensure that the user can interact with a session-based origin server.
请记住,每次端点通信时都会传输 cookie。
至于在客户端存储较大的值,dojox.storage
我想到了(虽然这是 javascript,但它显示了他们解决这个普遍问题的方法)。他们抽象了在客户端内存储大量数据的各种不兼容的方式 - 例如通过使用可用的之一
- AirDBStorageProvider,
- AirEncryptedLocalStorageProvider,
- AirFileStorageProvider,
- FlashStorageProvider,
- GearsStorageProvider,
- 什么WGStorageProvider。
如果您可以控制客户端,则可以使用 localstorage 走 HTML5 路线。 ,最多提供5MB的本地客户端空间。
最后一个想法:压缩或编码存储的数据,或者将其拆分,以便服务器可以接管一些实际值,而您只在客户端中存储 key (这反过来会增加更多连接)当然,整个事情的开销)。
关于java - Tomcat : Cookies length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716388/