【问题标题】:how do i set cookie for a different domain?如何为不同的域设置 cookie?
【发布时间】:2020-03-04 10:44:16
【问题描述】:

我正在运行 springboot,我尝试设置 cookie 并重定向页面

origin: http://abc.example.com  (generate a cookie)
destination: http://xyz.example.com (set the cookie for login)

@RequestMapping(value = "/getUrl",
                method = RequestMethod.POST,
                produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Object getRedirect(HttpServletRequest request,
                                        HttpServletResponse response) {
    String auth = generateKey();
    addCookie("auth", auth, response, -1);
    ResponseCode resp = new ResponseCode();
    resp.setUrl("http://xyz.example.com");

    return CommonUtil.toJson(resp);
}

public void addCookie(String name,
                      String value,
                      HttpServletResponse response, int exp) {
    Cookie cookie = new Cookie(name, value);
    cookie.setMaxAge(exp);
    cookie.setPath("/");

    response.addCookie(cookie);
}

和 HTML 一旦我收到请求,我就会使用

重定向
window.location.href=url;

但在xyz.example.com 中我没有看到正在设置cookie。

【问题讨论】:

    标签: javascript java cookies


    【解决方案1】:

    如果您不指定域,它将仅适用于设置它的特定子域。

    域指定允许的主机接收 cookie。如果未指定,则默认为当前文档位置的主机,不包括子域。如果指定了域,则始终包含子域。

    例如,如果设置了 Domain=mozilla.org,则 cookie 会包含在 developer.mozilla.org 等子域中。

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

    因此,您可能需要指定一个“example.com”域,以便在两个子域上都可以读取它。

    【讨论】:

    • 我尝试设置 cookie.setDomain(".example.com") 但没有成功
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2015-11-27
    • 1970-01-01
    • 2016-10-08
    • 2020-01-04
    • 2012-04-21
    • 2011-01-08
    • 2021-06-25
    相关资源
    最近更新 更多