如何在response.sendRedirect()之后发送cookie?

如何在response.sendRedirect()之后发送cookie?

问题描述:

我将用户重定向到一些网址,我想送一个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(),因为我将用户重定向到绝对页面。

可能吗?我究竟做错了什么?

饼干只能设置/对于相同的域或子域为其中请求被发送给检索。否则,这是一个巨大的安全漏洞。

所以,如果你要重定向到一个不同的域,则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