如何在ASP中正确读取带有引用值的Tomcat的cookie?

时间:2011-05-09 10:05:24

标签: tomcat cookies asp-classic escaping

我们有一个站点,它将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一如既往。

1 个答案:

答案 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将不加引号保存,但也会限制您使用较小的字符集和其他规则,例如没有任何前导/尾随空格。