setVersion(1) 后读取不到Cookie的值

dgseamaple 2008-05-29 12:15:19
开发环境: tomcat 6.0.16

写入Cookie的页面代码
Cookie cookie = new Cookie("email","abc@21cn.com");
cookie.setMaxAge(3600);
cookie.setVersion(1);
response.addCookie(cookie);


读取Cookie的页面代码
Cookie[] cookies = request.getCookies();
if (null != cookies && cookies.length != 0)
{
for (int i=0;i<cookies.length;i++)
{
Cookie cookie = cookies[i];
out.println(cookie.getName() + " = " + cookie.getValue() + "<br/>");
}
}

在同一浏览器进程可以正常读取,把浏览器关闭或另开一个浏览器,读取不到值。不应该是 Tomcat 的问题吧?据说Tomcat是对JSP支持最好的。

这里有一篇文章也是提到这个问题,可没有答案
http://mail-archives.apache.org/mod_mbox/tomcat-users/200802.mbox/%3C200802281117121.SM00936@sushil01%3E
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
虾米 2011-11-11
  • 打赏
  • 举报
回复

Cookie[] cookies = request.getCookies();
if (null != cookies && cookies.length != 0)
{
for (int i=0;i<cookies.length;i++)
{
Cookie cookie = cookies[i];
out.println(cookie.getName() + " = " + cookie.getValue() + "<br/>");
}
}

楼主知道了麻烦回复一下,另外我更想知道request.getCookies();会在有些用户机器上无法读取到值。
老紫竹 2008-05-29
  • 打赏
  • 举报
回复
,键值是不支持 @ 等特殊符号的

你不会替换一下吗?比如 @ 替换为 _==_

总之不可能出现的就行了,

或者Base64编码一下就行了。
dgseamaple 2008-05-29
  • 打赏
  • 举报
回复
之所以设置 setVersion(1) 是因为默认情况下,键值是不支持 @ 等特殊符号的
老紫竹 2008-05-29
  • 打赏
  • 举报
回复

String host = request.getServerName();
cookie = new Cookie("SESSION_LOGIN_USERNAME", username);
cookie.setPath("/");
cookie.setDomain(host);
cookie.setMaxAge(99999999);
response.addCookie(cookie);


我在用的一段代码,你参考一下!
dgseamaple 2008-05-29
  • 打赏
  • 举报
回复
替换当然是可以的,现在是要解决的是为什么 setVersion(1) 之后不能读取

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧