【问题标题】:Chrome App does not remove session cookies (JSessionId) unless all instances are closed除非所有实例都关闭,否则 Chrome 应用不会删除会话 cookie (JSessionId)
【发布时间】:2015-06-24 19:04:18
【问题描述】:

我发现 chrome 应用程序的关闭方式以及 JSession 或其他 http cookie 的维护方式存在严重的设计问题。

在我们当前的 Chrome 应用程序中,我们正在访问一个 Restful 站点(站点 B)以在身份验证后获取一些信息。站点 B 在响应中返回 Http only JSESSIONID cookie。

现在我无法简单地注销或重新加载或关闭=>打开 Chrome 应用程序并使用不同的身份验证来访问站点 B,因为 Chrome 应用程序再次发送相同的 JSESSIONID,该 JSESSIONID 在之前的身份验证期间收到。 更糟糕的是,即使我使用错误的用户 ID/密码传递身份验证标头,这也是允许的,因为根据 Java 规范 JSessionId 优先于身份验证标头。

在 Chrome 应用程序中,我无法删除此 Http only JSessionID 或限制 Ajax 调用(XHR 请求)以避免发送 JSession Id。即使您在 URL 中传递了错误的 JSESSIONID,这也不起作用,因为根据 Java 规范,cookie 中的 JSESSIONID 优先于 URL 中的。

即使我认为上述所有行为都符合 Java 规范,那么至少有人会期望当 Chrome 应用程序关闭或重新加载时会话 cookie 会自动删除。但似乎会话cookie没有被删除,因为相应的chrome.exe实例仍在后台运行。关闭所有 chrome 浏览器实例和/或从任务管理器手动终止所有 chrome 实例并重新加载应用程序后,它才会起作用,因为现在会话 cookie 已被删除。

谁能帮我找出 chrome 应用程序 API 或设置哪些
1) 在 Chrome 应用程序关闭并重新加载时删除会话 cookie。 2) 在 Chrome 应用程序关闭时终止 chrome.exe 实例。

我不是在寻找任何类型的手动过程。

提前致谢。 看禅

【问题讨论】:

  • 你是用 XHR 做的吗?

标签: google-chrome-app


【解决方案1】:

恐怕您遇到了 Chrome 应用平台已知缺失的内容。

也就是说,没有用于管理源自 Chrome 应用程序的 XHR 的 cookie 的方法。这是related issue,具体见评论#11。

正如问题中提到的,它非常笨拙,但您可以尝试使用<webview> 标签并在其中发出请求。里面的cookies不会持久化,可以手动清除。

【讨论】:

    猜你喜欢
    • 2012-05-23
    • 2014-05-11
    • 2023-03-19
    • 1970-01-01
    • 2015-07-03
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多