为什么这个 cookie 不发送到其他子域?

Why isn't this cookie sent to other subdomains?

我们有用于登录的身份验证 API 和提供受保护文件的文件下载 API。

身份验证 API 位于 authentication.api.mysite.com 和 returns 以下 header 成功 sign-in:

Set-Cookie: sessionId=QpiYzBXNNhiMZQSdWfKiDM; SameSite=None; Secure; HttpOnly; Domain=.mysite.com

(我也试过 Domain=.mysite.com,即带前导点,但运气不好。)

文件 API 位于 files.api.mysite.com 并允许客户端根据以下请求下载受保护的文件 header:

Cookie: sessionId=QpiYzBXNNhiMZQSdWfKiDM

API 由位于 something.othersite.com 的网络应用程序使用。在浏览器开发工具中,我看到 sign-in 响应在“Cookies”选项卡中有 cookie,所以我知道它已设置。并且 cookie 被发送到其他请求以对抗身份验证 API。但是在对文件 API.

的请求中没有发送 cookie

据我了解(例如 MDN),如果 Domain 设置为 mysite.com(或 .mysite.com 由其他来源判断),那么它也应该是发送到 api.mysite.comwhatever.api.mysite.com。但它不会发送到其他子域。

我们做错了什么?我们如何才能让浏览器将身份验证 API 设置的 cookie 传递到文件 API?

如果相关:两个 API 都使用 CORS,设置为允许我们正在使用的特定主机(不是通配符),允许任何方法,允许任何 header,允许凭据,并公开一组我认为不相关的 header(Set-Cookie 不包括在那里,但我们添加它时没有任何区别)。

cookie 正确;问题是由 front-end 调用 API 的方式引起的。 front-end使用axios,解决方案是使用withCredentials选项,例如:

axios.post(
  url,
  data, 
  { headers: headers,
    withCredentials: true }
)