Java的饼干在两战
我已经两战部署我的Web服务器上可以说,A.war和B.war &我的web应用程序既是战争即A的组合和B.warJava的饼干在两战
现在我想在A war服务的java端生成cookie,并且希望在访问B war的服务器时获得相同的cookie。
我用
response.addCookie(新的Cookie( “键”, “值”))
在A.war服务尝试过。 Definaltly它会被存储在cookie的
&我得到在B.war serices饼干作为request.getCookie()
做我需要做任何事情从这个额外的开?
Cookie默认为每个域。通常情况下,负载均衡器将拥有公共URL,并且Web服务器将位于服务器的静态内容之后。像Java这样的应用程序服务器可以直接位于负载均衡器之后,也可以通过Web服务器。所以基本上,只要所有部署的应用程序托管在同一个域中,浏览器将默认将所有的Cookie发送到所有应用程序。所以是的,在你的情况下,它会工作。
据我所知,setPath(“/”)会给你所有战争服务器上的cookie数据托管同一个Web服务器。但是如果我的A战在不同的服务器上而B战在不同的服务器上会发生什么?意思是它如何在集群/节点上工作?它会按预期工作吗? – ashishl
Cookies是返回到matches如有饼干domain attribute任何host,否则只是设置它的主机。 如果您不使用Cokie::setDomain,则未设置属性域。
此外,用户代理将仅发送具有作为path attribute的子目录的路径的唯一请求的cookie。如果您不使用Cokie::setDomain,则路径属性会自动设置为请求路径。
所以共享上下文中的Cookie,你只需要设置path属性相同的主机:
Cookie c = new Cookie("name", "value");
c.setPath("/");
request.addCookie(c);
应该在域属性没有拒绝。
这只是因为在HTTP响应中设置了cookie而另一个请求正从同一客户端发送给B。这种味道是错误的,但是为了共享cookie,这个*可能会起作用* – christopher
可以请给出任何链接或例子,其中cookie可以从java一方本身共享。 – ashishl
定义共享。 Cookie是一种HTTP构造,因此请牢记这一点。 – christopher