首页 > 解决方案 > 如何让浏览器在发起跨域HTTP请求时包含主机源域的cookies

问题描述

我使用 Fetch api 将凭据设置为“include”,从网站“demo.home.com”向“demo.company.com”发出了跨域 HTTP 请求。有两个饼干。一个是'cookie_home=123; 域=demo.home.com',另一个是'cookie_company=456; 域=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'
});

标签: javascriptcookiesfetchcross-domaincredentials

解决方案


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

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

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


推荐阅读