【发布时间】:2015-07-13 14:30:43
【问题描述】:
更新:在对我在第二部分中列出的原始问题进行分析后,我发现问题可能是由于 304 响应,下面是详细说明。
我开发了一个 Web 应用程序,用户在该应用程序中单击链接并将他带到 servlet,我在其中设置了一些会话变量,然后将其转发到 jsp。当我第一次访问应用程序时,在关闭浏览器然后打开浏览器并访问应用程序后工作正常,我在 jsp 中得到空指针异常,因为它试图访问会话数据,这是我为 servlet 获得 304 响应的原因,所以这意味着那个servlet没有被调用并且我的jsp被调用了?由于 servlet 不被称为会话值,因此未设置。
我的理解正确吗?
我只在 IE9 中观察到这一点
---------我原来的问题在下面--------
我们已经在我们的应用程序中集成了 Siteminder,我观察到 Siteminder cookie SM 会话是为不同的域创建的,而我的应用程序特定的 cookie 是为适当的域创建的。
对于每个请求,我都会看到新的 smsession 值,但我的应用程序 cookie 保持不变,即使 cookie 保持不变,我在会话中使用 servlet 设置的值在我的 jsp 中不可用。
我已经打印了jsession id,jsession id 对于所有请求都是相同的。
下面是流程。
用户点击一个 URL,站点管理员拦截它并在用户成功登录后要求提供凭据,他被重定向到 servlet,我在 Session 中设置了一些值,然后我将控件发送到具有两个框架的 index.html。我正在为这些框架加载两个 jsp,在这些 jsp 中我试图访问我无法获取的会话值。
我只在 IE9 中观察到这种行为,但 IE8 行为正确, 第一次访问正常,第二次在 IE9 中不行
如果 smsesson 的变化会导致 java 应用程序的 httpsession 发生变化,谁能告诉我?我不这么认为,因为 Jsession id 保持不变。
这可能是什么原因。
【问题讨论】:
标签: servlets cookies internet-explorer-9 frames siteminder