2012-08-08 540 views
4

我將用戶重定向到一些網址,我想送一個cookie吧:如何在response.sendRedirect()之後發送cookie?

 Cookie cookie = new Cookie("CADASTROADM", "someValue"); 
     cookie.setPath("/"); 
     cookie.setMaxAge(129600); //With it or without, makes no difference. 
     URL urlToRedirect = new URL(pageToRedirect); 
     cookie.setDomain(urlToRedirect.getHost());//With it or without, makes no difference. 
     response.addCookie(cookie); 
     response.sendRedirect(pageToRedirect); 

然而,當他重定向到該頁面時,cookie是不存在的。我無法使用requestDispatcher.forward(),因爲我將用戶重定向到絕對頁面。

可能嗎?我究竟做錯了什麼?

回答

6

餅乾只能設置/對於相同的域或子域爲其中請求被髮送給檢索。否則,這是一個巨大的安全漏洞。

所以,如果你要重定向到一個不同的域,則cookie將無法使用在那邊。如果您明確地將cookie域設置爲不同的域,那麼它將被忽略。如果您沒有明確設置cookie域(因此它默認與發送請求的域相同),那麼它只能用於當前域,而不能用於重定向域。

根據具體的功能需求,您需要尋找其他方法。很難提出一個建議,因爲你根本沒有告訴任何有關你的問題的具體功能要求。也許你應該只發送一些具體的請求參數?

+2

非常感謝。那是我正面臨的確切問題。要解決它,我不得不使用cookie.setDomain(「。commondomain.com」); (通用域是我的應用程序和我試圖發送的應用程序相同的URL的一部分 – thevoyager 2012-08-09 01:00:23

+0

@ user1582142我也面臨像你的問題,但我有點不同我的客戶端運行在8100和服務器是在8080服務器上運行有春天的安全性,在'defaultSuccessUrl'重定向到該網址其他一些'url'沒有'設置cookie' @BalusC – SakthiSureshAnand 2016-09-09 04:55:27

+0

@ user1582142如何做到這一點在Java方面,因爲重定向發生在Java中java我使用的是angularjs它沒有來到前端,是否有可能在春季安全重定向url時設置cookie,@BalusC – SakthiSureshAnand 2016-09-09 04:57:30