【问题标题】:Cross-browser cookie inconsistency?跨浏览器cookie不一致?
【发布时间】:2011-08-09 08:01:37
【问题描述】:

这几天我们遇到了一个非常有趣的问题,我一直在追着尾巴试图解决它。我将不胜感激。

场景:

我们有一个 GWT Web 应用程序,在系统正常使用的某个阶段,用户可能需要输入密码才能访问应用程序的某个部分。我们通过显示一个对话框来做到这一点,该对话框包含一个带有 jsp 的 iframe,然后用户在其中输入他的密码。这被编码并发送到 jsp servlet,后者验证凭据,如果成功,则向应用程序发送一个 cookie,通知它验证成功。

问题:

当我们在本地开发环境中运行应用程序时,一切正常。请求会正确生成,并且 cookie 会完美发送。然而,当我们在我们的客户端测试环境(与我们的本地环境相同)中运行它时,它在 Firefox 上完美运行,但不适用于 Chrome 和 IE。 (我们确实采取了确切的战争并在两个地方都放弃了)。

一些数据包嗅探似乎表明 jsp servlet 在服务器端生成的 cookie

response.addCookie(cookie);

永远不会到达 Chrome 或 IE,但它适用于 Firefox。

我们在服务器端的跟踪表明正确的请求确实到达了 servlet,并且所有浏览器每次都运行相同的代码。

有没有人遇到过类似的问题?我们的技术适用栈是:

  1. Java 1.6
  2. GWT 2.2.0
  3. Apache Tomcat 7.0.8

谢谢!

【问题讨论】:

    标签: java jsp gwt cookies


    【解决方案1】:

    问题与 P3P 设置有关——尤其是 IE 对 P3P 标头和 p3p.xml 文件非常敏感。 如果你用谷歌搜索“cookies p3p”,你会发现很多关于设置的资源(它只是一个 http 标头和一个需要访问的 xml 文件)。 在你问之前,它在你的本地环境中工作的原因是因为 IE 会对“Internet 区域”应用不同的隐私和安全设置。

    【讨论】:

      【解决方案2】:

      我发现出了什么问题。

      测试环境设置的服务器时间好像比实际时间晚了9分钟。 cookie 设置为 1 分钟后过期,这将导致它在到达客户端浏览器后立即过期。将cookie更改为在浏览器退出时过期后,一切正常。

      【讨论】:

      • @Riley - 大声笑,谢谢。虽然我讨厌花这么多时间试图追查一个问题,但它最终变得如此愚蠢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      相关资源
      最近更新 更多