可以在 CORS 请求中包含来自目标站点的凭据(cookie)吗?

问题描述 投票:0回答:1

我有两个不同的域,并尝试在两个域之间共享数据。

我的计划是让domain-1.com向domain-2.com发出GET请求,这将使用他们在domain-2.com上的登录状态。

domain-2 具有适当的 HTTP 标头:

response.headers["Access-Control-Allow-Origin"] = request.headers["Origin"]
response.headers["Access-Control-Allow-Credentials"] = "true"
response.headers["Access-Control-Allow-Methods"] = "GET, OPTIONS"
response.headers["Access-Control-Allow-Headers"] = "Content-Type"

if request.method == "OPTIONS"
    return head :ok
end

return render json: {user: user}, status: 200

domain-1 发出获取请求:

fetch('https://domain-2.com/endpoint', {
    method: 'GET', 
    mode: 'cors', 
    credentials: 'include'
});

我可以看到

OPTIONS
请求显示
200 OK
GET
请求显示 200。

但是没有发送

Cookie
标头。

这是因为这是两个不同的域吗?

为什么当我

www.domain.com
api.domain.com
发出包含在
api.domain.com
上设置的 cookie 的请求时,此操作会起作用?

javascript cors
1个回答
0
投票

这似乎是原因 - cookie 设置为

SameSite
属性 - https://security.stackexchange.com/a/261240

因此,为了在我的场景中发挥作用,我需要在 cookie 上使用限制较少的

SameSite
属性。

© www.soinside.com 2019 - 2024. All rights reserved.