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

时间:2012-08-08 20:46:03

标签: java servlets redirect cookies

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

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

1 个答案:

答案 0 :(得分:8)

只能为发送请求的域或子域设置/检索Cookie。否则这是一个巨大的安全漏洞。

因此,如果您要重定向到其他域,那么该cookie将无法在那里使用。如果您明确地将cookie域设置为该不同的域,那么它将被忽略。如果您没有明确设置cookie域(因此它默认设置为发送请求的域),那么它只能用于当前域,而不能用于重定向域。

您需要寻找其他方式,具体取决于具体的功能要求。由于你根本没有说明你问题中的具体功能要求,所以很难建议一个。也许您应该发送一些特定的请求参数?