6

我正在尝试在 Servlet 响应中设置一个值为 unkown#4?Wn5pZ1JwQnlLEGRJAgB4WQU%3D 的 cookie。

但是,当我在浏览器中设置 cookie 时,它​​会返回带有引号,如下所示:

“未知#4?Wn5pZ1JwQnlLEGRJAgB4WQU%3D”。

为什么会这样?我们使用 Jetty 作为应用服务器。

我会把我写的代码

String cookieValue = "unkown#4?Wn5pZ1JwQnlLEGRJAgB4WQU%3D";
Cookie zedoCookie = new Cookie("cookiename", cookieValue);
zedoCookie.setMaxAge(31536000); // this is one year duration.
zedoCookie.setDomain("somedomain.com");
zedoCookie.setPath("/");
response.addCookie(zedoCookie);

有人可以对此有所了解吗?

我已经看过。但这似乎并没有解决我的问题。

4

1 回答 1

9

Jetty 8(或更早版本)似乎将以下字符视为 Cookie 中不允许的字符:("\\n\r\t\f\b%+ ;=HttpFields - > __COOKIE_DELIM)。如果这些字符之一包含在 cookie 的值中,则该值将在 HTTP-Header 中用双引号引起来。URL-Encoding 不能解决问题,从那时起你仍然会有%字符在里面。对我来说,这似乎是一个错误。我向Jetty 邮件列表发布了一个问题。邮件列表上还有另一篇文章,解释了 Jetty 版本 9 中为什么会提出 cookie 版本。

于 2013-03-05T18:52:51.100 回答