5

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

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

4

1 回答 1

9

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

因此,如果您要重定向到不同的域,那么那里的 cookie 将不可用。如果您明确地将 cookie 域设置为该不同的域,那么它将被完全忽略。如果您没有明确设置 cookie 域(因此它默认为与请求发送到的域相同的域),那么它将仅适用于当前域,而不适用于重定向的域。

您需要根据具体的功能要求寻找替代方法。很难提出一个建议,因为您根本没有告诉任何有关您问题中的具体功能要求的内容。也许您应该只发送一些特定的请求参数?

于 2012-08-09T00:44:19.563 回答