2

我有两个在 Jboss 中运行的应用程序,我可以在一个应用程序中写入一个 cookie 并在另一个应用程序中读取吗?

例如,如果我有两个 Servlet: - localhost:8080/Application1 上的 WriterCookieServlet - localhost:8080/Application2 上的 ReaderCookieServlet

WriterCookieServlet:

 Cookie cookie = new Cookie("cookie", "cookieValue");
 response.addCookie(cookie);
 response.sendRedirect("localhost:8080/Application2");

然后在 ReaderCookieServlet 上我想读取这个 cookie。

4

3 回答 3

2

我认为@galuano1 是对的:这确实应该是可能的。不过,请确保路径正确。它用于确定某个 cookie 是否对 Web 应用程序可见。

来自Cookie Javadoc

该 cookie 对您指定的目录中的所有页面以及该目录的子目录中的所有页面都是可见的。cookie 的路径必须包含设置 cookie 的 servlet,例如/catalog,这使得 cookie 对服务器上/catalog下的所有目录可见。

有关为 cookie 设置路径名的更多信息,请参阅 RFC 2109(可在 Internet 上获得)。

我会说你应该使用/目录,因为两个应用程序都有不同的上下文根。

于 2012-10-04T12:39:15.173 回答
2

只要cookie中指定的域相同(这里是localhost),cookie就可以被两个不同的应用程序读取。

于 2012-10-04T12:41:15.113 回答
0

确实如此:如果 cookie 来自同一个域,则应用程序可以从理论上读取它。这意味着应用程序有它可用,并不意味着应用程序有解释它所需的秘密

这里的问题可能与理论部分无关,而是与技术部分有关:如果 cookie 不是明文(它应该是)它需要由需要读取内容的目标应用程序

打开 如果伪造 cookie 的应用程序与需要读取它的应用程序相同,这通常是开箱即用的。
但是如果它是由应用程序 1 伪造的,并且需要由应用程序 2 解密,则需要确保使用此命令:

Cookie cookie = new Cookie("cookie", "cookieValue");

不使用任何特定于应用程序的秘密来加密 cookie,否则它永远不会被其他应用程序打开。
当然答案可能会根据您使用的技术而改变,不知道 Java 中的行为,我知道许多技术使用基于机器的秘密来加密和签署 cookie。

于 2021-11-28T09:16:22.210 回答