如何创建一个不围绕价值引号饼干吗?(How to create cookie without quo

2019-07-18 22:20发布

我需要创建一个电子邮件地址作为价值饼干 - 但是当我尝试 - 那么我的结果:

“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);

谢谢你的帮助。

Answer 1:

它的确是造成@符号。 这是不允许的 ,版本0的饼干。 容器将隐含地迫使它成为一个版本1的cookie(打破在MSIE浏览器)。 你想URL编码,对cookie的创建cookie值

Cookie cookie = new Cookie("login", URLEncoder.encode("someone@example.com", "UTF-8"));
cookie.setMaxAge(2592000);
cookie.setDomain("domain.com");
response.addCookie(cookie);

和URL解码它的cookie阅读

String value = URLDecoder.decode(cookie.getValue(), "UTF-8");

请注意,您应该肯定没有明确的cookie版本设置为1。

也可以看看:

  • 为什么有空白cookie的值在引号客户端到达?

无关的具体问题,Cookie是由最终用户或人在该中可见和可操作。 在cookie中随身携带的电子邮件地址是难闻的气味。 如果终端用户变成一个不同的地址? 无论功能要求(记住登录?)你想在一个cookie随身携带的电子邮件地址应该最有可能被不同的解决来解决。

也可以看看:

  • 我应如何登录到我的网站月用户?


文章来源: How to create cookie without quotes around value?