如何为其他域设置Cookie?

时间:2019-11-07 19:32:16

标签: javascript java cookies

我正在运行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。

1 个答案:

答案 0 :(得分:0)

如果您未指定域,则该域将仅应用于设置了该域的特定子域。

  

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

     

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

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

因此,您可能需要指定一个“ example.com”域,以使其在两个子域中均可读。