2011-03-17 81 views
0

我正在Tomcat上开发一个使用JSP/Servlet的简单Web应用程序。 我有一个index.jsp页面,提供用户界面并加载重复“轮询”AJAX请求的JS代码 - 简单的东西。为什么tomcat会为每个请求创建一个会话cookie?

问题是,每个ajax请求都会返回一个新的jsessionid,所以我试图存储在会话对象中的数据每次都会丢失。

这个问题不会发生在我直接调用tomcat的开发机器上,它只发生在请求通过Apache进行的登台/活环境中(在我的开发机器上,我调用localhost .../path/index.jsp和本地主机... /路径/ ajax.jsp - 在现场环境中的apache路由domain.com到domain.com/path/index.jsp和domain.com/ajax.jsp到domain.com/path/ajax.jsp)

我证实我没有useHttpOnly param或useCookies配置的任何地方。我们正在使用tomcat 6 BTW。

难道是apache-tomcat的交互问题吗?

感谢您的帮助!

回答

2

这可能是Cookie的路径问题。也许会话cookie被绑定到domain.com/path。但从浏览器的角度来看,路径是domain.com/

将cookie路径设置为/会使浏览器也发送cookie到domain.com/。

你可以检查Firebug/Fiddler中的cookies并在此处发布内容?

1

不幸的是,Servlet API是 在创建会话时相当自由。 各种工具都有默认行为 ,它们可以在后台隐式创建会话 。 “ ”应用程序很容易创建会话,即使其中一个未明确请求 也是如此。

举一个例子,如果还没有 存在,JSP通常会创建一个会话 。这使得JSP可以使用隐含会话变量 。作为第二个 示例,如果还不存在 ,则request.getSession() 方法也将自动创建 会话。

http://www.javapractices.com/topic/TopicAction.do?Id=191

我认为这个问题的原因上面

0

解释在index.jsp的顶部尝试<%@ page session="false" %>。如果这样做的话,然后找到另一种方式来存储值(在请求范围内)

相关问题