我需要使用电子邮件地址创建cookie作为值 - 但是当我尝试 - 然后我有结果:
“someone@example.com”
但我希望:
someone@example.com
应该创建cookie而不使用双引号 - 因为其他应用程序以这种格式使用它。如何强制java不添加双引号? Java添加它们是因为有特殊的字符“at”。
我以这种方式创建cookie:
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
Cookie cookie = new Cookie("login", "someone@example.com");
cookie.setMaxAge(2592000);
cookie.setDomain("domain.com");
cookie.setVersion(1);
response.addCookie(cookie);
感谢您的帮助。
答案 0 :(得分:12)
确实是由@
标志引起的。这是版本0 cookie中的not allowed。容器将隐式强制它成为版本1 cookie(在MSIE浏览器中中断)。您想{cookie}创建
Cookie cookie = new Cookie("login", URLEncoder.encode("someone@example.com", "UTF-8"));
cookie.setMaxAge(2592000);
cookie.setDomain("domain.com");
response.addCookie(cookie);
在cookie阅读中
String value = URLDecoder.decode(cookie.getValue(), "UTF-8");
请注意,您确定不应将Cookie版本明确设置为1。
无关,最终用户或中间人可以看到和操纵cookie。在cookie中携带电子邮件地址是一种难闻的气味。如果最终用户将其更改为其他地址怎么办?无论什么功能要求(记住登录?),您认为通过在cookie中携带电子邮件地址来解决,最有可能以不同的方式解决。