我将用户重定向到某个 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(),因为我正在将用户重定向到绝对页面。
这可能吗?我究竟做错了什么?
最佳答案
只能为请求发送到的相同域或子域设置/检索 Cookie。否则就是一个巨大的安全漏洞。
因此,如果您要重定向到不同的域,那么 cookie 将在那里不可用。如果您明确将 cookie 域设置为那个不同的域,那么它将被简单地忽略。如果您没有明确设置 cookie 域(因此它默认为与请求发送到的域相同的域),那么它将仅适用于当前域,而不适用于重定向的域。
您需要根据具体的功能需求寻找替代方法。很难提出一个建议,因为您根本没有说明问题中的具体功能要求。也许您应该只发送一些特定的请求参数?
关于java - 如何在 response.sendRedirect() 之后发送 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872896/