如何使浏览器在发起跨域 HTTP 请求时包含主机源域的 cookie

How to make the Browser include the cookies of the domain of the host origin when making a cross-origin HTTP request

我使用 Fetch api 从网站 'demo.home.com' 向 'demo.company.com' 发出了跨源 HTTP 请求,凭据设置为 'include'。有两个饼干。一个是'cookie_home=123; Domain=demo.home.com',另一个是'cookie_company=456; Domain=demo.company.com'。结果,请求中包含了 cookie 'cookie_company'。有没有办法让cookie 'cookie_home' 包含在请求中?

// the request is made in the website 'http://demo.home.com'
// the cookies are:
// 'cookie_home=123; Domain=demo.home.com'
// 'cookie_company=456; Domain=demo.company.com'
fetch('http://demo.company.com/api/test', {
    method: 'GET',
    credentials: 'include'
});

你不能。 fetch(和 XMLHttpRequest)不提供在请求中手动设置 cookie 的机制。

他们只会在浏览器的 cookie 罐中为目标 URL 发送 cookie。这适用于 cookie 所属域的正常规则。

您需要使用其他一些机制来发送存储在 cookie 中的数据。