跨应用程序部署在同一服务器上的Cookie共享

时间:2013-03-26 23:44:13

标签: jsp servlets cookies glassfish

我有两个基于struts 1.3框架工作的应用程序,并部署到glassfish服务器3.1.2

app-1有自己的网址http:localhost:8080 / app-1

&安培;

app-2有自己的网址http:localhost:8080 / app-2

功能:app-1& app-2支持各种语言。通过app-1进入用户日志,并为所选语言设置cookie。

稍后,app-1的app-2有几个href。 href更通用。根据app-1中选择的语言到达app-2后,会显示各种页面。

问题是,app-2将如何知道在app-1中选择的语言是什么?如何通过app-1将app设置为app-2?或者还有其他选择吗?

2 个答案:

答案 0 :(得分:2)

在创建Cookie时,将Cookie中的path属性设置为/。 Servlet 3.0提供了通过应用程序设置cookie属性的API。

如果设置了Path(应用程序上下文根目录),则仅当URL以该路径开头时才会发送cookie。将其设置为/将使浏览器能够发送该域内所有应用程序的cookie。

  

Java Doc:setPath ......

     

public void setPath(java.lang.String uri)   
指定客户端应返回cookie的cookie的路径。

     

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

     

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

     

参数:         uri - 指定路径的字符串

答案 1 :(得分:0)

出于安全原因,似乎无法访问为不同路径设置的cookie,即使它位于同一域中:

https://stackoverflow.com/a/1968108/1916098

您可以尝试另一种方法:如果两个servlet共享相同的上下文,您可以使用它(ServletContext)在它们之间共享信息。看看这个:

How can I share a variable or object between two or more Servlets?