[英]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.