繁体   English   中英

动态更改JSESSIONID cookie的域?

[英]Dynamically change domain of JSESSIONID cookie?

如何动态更改tomcat或jetty生成的JSESSIONID cookie的域?

我偶然发现了这一点: 在Tomcat中的上下文之间共享会话数据

但是我需要根据请求执行此操作(以上是基于上下文)。

例如:

request1 comes from www.testdomain1.com and needs the domain ".testdomain1.com".
request2 comes from www.testdomain2.com and needs the domain ".testdomain2.com". 

域在部署时未知,并且可以随时更改。

我使用了带有HttpServletResponseWrapper的简单servlet过滤器来处理我的应用程序中的cookie,但是JSESSIONID不会被过滤器拦截(它不是由Webapp生成的,而是由容器生成的)。

[edit]无法使用httpRequest.getSession().getServletContext().getSessionCookieConfig().setDomain()方式,因为似乎在初始化上下文后,sessioncookieconfig是只读的。

[edit]无法使用tomcat阀门,因为响应已经提交(isCommitted为true)。 另外,tomcat不使用响应addCookie或标头方法来设置JSESSIONID cookie。 而且Response类是最终类,因此不能为该类创建包装器。

使用码头的[edit]自定义SessionHandler也不起作用,原因是无法访问请求对象。

我高度怀疑这整个事情是不可能的。 我能看到的唯一解决方案是将一个代理放在servlet容器前面,并以这种方式更改cookie,但这太过分了。

在创建会话之后的下一个请求中,获取所有cookie

Cookie[] c = request.getCookies();
//for loop{
  if(c.getName.equals("JSESSIONID")){
         c.setDomain("....);
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM