我们有一个站点,它将Tomcat下的Java Web应用程序与ASP页面集成在一起,包括以传统ASP键/值格式共享cookie中的信息:
Cookie: foo=a=b&c=d; ...
从Tomcat 5.5.26开始,cookie处理略有改变,其效果是我们的cookie值现在用引号括起来,而不是之前的情况:
Cookie: foo="a=b&c=d"; ...
但是,我们有ASP代码也读取此cookie,并期望其中的值可解析:
Response.Write("["+Request.Cookies("foo")("c")+"]");
现在无法返回预期结果:
[d"]
我已阅读过使用:
javax.servlet.http.Cookie#setVersion(int)
修改此行为但似乎不是这里需要的。我知道引用的值更“正确”,但试着告诉ASP ......有没有让我错过让ASP(或Tomcat)玩得好的技巧? TIA一如既往。
答案 0 :(得分:2)
引用的Cookie与Cookie版本相关> 1或2 非引用的cookie适用于cookie版本0
如果您看一下tomcats bugzilla上非常有趣的讨论:https://issues.apache.org/bugzilla/show_bug.cgi?id=44679,似乎有多种方法来调整tomcats cookie行为。
如果您可以控制tomcat设置cookie,那么这将是切换到非引用cookie的方法:
Cookie cookie = new Cookie(COOKIENAME,COOKIEVALUE);
cookie.setVersion(0);
此cookie将不加引号保存,但也会限制您使用较小的字符集和其他规则,例如没有任何前导/尾随空格。