由具有双引号的应用程序服务器设置的Cookie

Sam*_*Sam 6 java cookies servlets jetty

我试图在Servlet响应中设置一个值未知的cookie#4?Wn5pZ1JwQnlLEGRJAgB4WQU%3D.

但是当我在浏览器中设置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);
Run Code Online (Sandbox Code Playgroud)

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

我已经看过了这个.但它似乎没有解决我的问题.

wol*_*s42 8

好像码头8(或更早)把下面的字符作为饼干不允许的:"\\n\r\t\f\b%+ ;=(HttpFields - > __COOKIE_DELIM).如果其中一个字符包含在cookie的值中,则该值将用HTTP-Header中的双引号括起来.URL-Encoding没有解决问题,因为那时你仍然会有%角色.对我来说,这似乎是一个错误.我向Jetty邮件列表发了一个问题.邮件列表上还有另一篇文章,解释了为什么在Jetty版本9中引发cookie版本.