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

标签 java servlets redirect cookies

我将用户重定向到某个 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/

相关文章:

java - 从 Jetty HTTPServletRequest 获取 MAC 地址

java - 我的 oracle servlet 出现空白屏幕

java - 带有 DelegatingFilterProxy 的 Spring Security

php - .htaccess条件: https, www,重写

java - 如何在清理文档时删除空文本元素?

java - 流式传输 2d 数组、修剪值并收集回 2d 数组

Grails url 重定向问题

javascript - 创建具有动态高度的 iframe

java - 使用表单 :options 进行表单验证

java - 创建 Google 登录时出错