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

the*_*ger 4 java cookies redirect servlets

我正在将用户重定向到某个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);
Run Code Online (Sandbox Code Playgroud)

但是,当他被重定向到页面时,cookie就不存在了.我不能使用requestDispatcher.forward(),因为我正在将用户重定向到绝对页面.

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

Bal*_*usC 8

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

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

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

  • 非常感谢.那是我面临的确切问题.要修复它,我必须使用cookie.setDomain(".commondomain.com"); (通用域是URL的一部分,对于我的应用程序和我尝试发送的应用程序都是相同的. (2认同)