rob*_*son 4 cookies quotes servlets http
我需要用电子邮件地址创建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);
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
Bal*_*usC 12
这确实是由这个@
标志引起的.版本0 cookie中不允许这样做.容器将隐式强制它成为版本1 cookie(在MSIE浏览器中中断).您想在cookie的创建上对cookie值进行URL编码
Cookie cookie = new Cookie("login", URLEncoder.encode("someone@example.com", "UTF-8"));
cookie.setMaxAge(2592000);
cookie.setDomain("domain.com");
response.addCookie(cookie);
Run Code Online (Sandbox Code Playgroud)
并在cookie读取时对其进行URL解码
String value = URLDecoder.decode(cookie.getValue(), "UTF-8");
Run Code Online (Sandbox Code Playgroud)
请注意,您应该确保不将cookie版本明确设置为1.
与具体问题无关,最终用户或中间人可以看到和操纵cookie.在cookie中携带电子邮件地址是一种难闻的气味.如果最终用户将其更改为其他地址怎么办?无论什么功能要求(记住登录?),您认为通过在cookie中携带电子邮件地址来解决,最有可能以不同的方式解决.
归档时间: |
|
查看次数: |
7940 次 |
最近记录: |