【问题标题】:java creating and deleting cookies unexpected behaviorjava创建和删除cookie的意外行为
【发布时间】:2012-12-27 05:55:06
【问题描述】:

我在使用 java 处理 cookie 时遇到问题:

我们有一个由 apache 管理的 tomcat 集群来服务多个应用程序,都在同一个域上。

第一个问题:

使用java创建cookie,设置cookie.setPath("/")覆盖所有域页面,以便所有应用程序能够读取cookie,场景,

  1. 我在application1app1创建cookie,设置cookie的路径到​​/app1/
  2. 移动到app2app2 无法读取cookie,它使用另一个路径创建cookie,/app2/

出了什么问题?

第二个问题:

完美的 cookie 删除代码在我们的服务器上运行良好, 但是移出到不同的服务器,代码可以读取cookie,所以那里没有域问题,但不能删除它。

Java 处理 cookie 又出了什么问题?

我必须使用 javascript 比 java 更好地处理 cookie 吗?

【问题讨论】:

  • 不发布代码,你不会走太远,因为猜测是毫无用处的。
  • 我认为问题不在于代码,对于第一个问题,通过嵌入到每个应用程序中的 servlet 创建 cookie,使用 cookie.setPath("/"),并且创建错误奇怪的路径,例如 /app1/ 是第二个问题,删除代码在另一个环境中工作正常,我认为虽然它工作,但我可以在新环境中读取 cookie,为什么删除失败,可能与代码无关它自己。
  • 在你有相反的证据之前,不要一开始就认为问题出在 JDK/JEE 实现中,因为一个被数百万人使用的简单特性。始终首先质疑您的代码。如果你不得不问 SO,你必须重新考虑你的假设,我们不必认为它们是理所当然的。
  • 您是否尝试过直接请求 Tomcat 实例来消除 Apache 配置问题?
  • 你能解释一下你的意思吗?

标签: java javascript jakarta-ee cookies setcookie


【解决方案1】:

你应该设置域,而不是路径:

cookie.setDomain("example.com");

现在example.com 上的所有应用程序都可以共享同一个 cookie。例如,app1.example.comapp2.example.com 上的应用程序将能够看到此 cookie。

【讨论】:

  • 所有应用程序都可以通过 www.example.com/app1 、 www.example.com/app2 访问。实际上,该域已按照所写的正确方式解决。
  • 那么这应该没有任何问题。我猜问题出在其他地方。
  • 请注意,我们有一个 tomcat 节点集群,以及一个管理这些节点的 apache 服务器,所以每个应用程序都可能驻留在某个节点上,但仍然可以由同一个域访问,这会是一个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
相关资源
最近更新 更多