簡體   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