【问题标题】:IE always sending the same jsessionid over time (using Java Wicket)IE 总是随时间发送相同的 jsessionid(使用 Java Wicket)
【发布时间】:2012-04-25 17:32:44
【问题描述】:

我有一个托管在本地环境中的应用程序,并且遇到了一个仅在 IE 中出现的非常奇怪的问题。我测试过的其他浏览器(Chrome 和 Firefox)似乎没有重现该问题。

我正在使用 Wicket 1.5.0 快照。

在应用程序中,我有一个调度页面,用于验证初始请求并在验证后采取进一步行动。在里面我有:

setResponsePage(Canvas.class, pageParams);
MyCustomSession.get().bind();

在 Canvas 页面中调用 MyCustomSession.get() 后,它会为每个请求返回一个全新的会话,这会导致问题,因为我之前放入会话中的所有数据都已消失。

然后我追查了问题,在我看来,IE 总是在请求标头中发送相同的 jsessionid,无论如何 - 8302844E8BB8FD6D1A617C0E6A2C58C3。

在 setResponsePage(Canvas.class, pageParams) 的响应头中,状态码为 302,我看到响应头如下:

Set-Cookie JSESSIONID=91474844FC17D16B960A0760BA9DC129; Path=/apppath

不管来自 IE 的所有下一个请求都具有该标头字段(与以前相同的会话 ID):

Cookie JSESSIONID=8302844E8BB8FD6D1A617C0E6A2C58C3

请帮助我解决这个问题,因为它真的让我很困扰。谢谢!

【问题讨论】:

  • @jordeu 您是否想到了一个特定的错误,该错误已在 1.5.5 中修复,或者您只是在猜测?
  • 猜测...但我记得在 firsts 1.5.x 版本中存在一些与会话相关的错误。
  • 谢谢 .. 但我已经找到了问题和解决方案 :) 你可以在下面看到它

标签: internet-explorer session wicket wicket-1.5


【解决方案1】:

实际上问题是根本没有发送cookie。我进一步检查发现这是第三方内容通信的问题(正如 IE 术语所定义的那样)。

我们的应用程序是一个 FB 应用程序,因此包含在 iframe 中(因为被 FB 嵌入)并且 IE 的安全设置拒绝将 cookie 发送到我们的 - 在这种情况下 - 第三方内容。经过一番研究,我发现将 P3P(Platform for Privacy Preferences Project)标头放在我们的响应中将满足这些政策,并使 IE 能够在请求标头中发送 cookie。

为此,我在我们的 Web 项目中创建了一个过滤器,以将该标头放入从我们的应用发送的每个响应中。

【讨论】:

    【解决方案2】:

    基本上只是一个疯狂的猜测:浏览器中是否为同一域的路径 / 存储了一个 JSESSIONID cookie,从而产生了这种奇怪的行为?也许 IE 发送这个 cookie 而不是为/apppath 存储的那个。

    在我脑后的某个地方,我似乎记得一个类似的问题,但不幸的是我不记得解决方案......

    猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    相关资源
    最近更新 更多