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