【发布时间】:2020-06-30 22:05:39
【问题描述】:
互联网上充斥着这种类型的请求,但我再次询问,因为所有答案似乎都是在 2014 年左右。我有类似的问题,但现在没有一个旧修复程序有效,所以我不确定如果 2020 年(及以后)需要新的东西。
我正在尝试从domainA.com 拨打电话至domainB.com。用户在 domainB.com 上进行身份验证,该身份存储在该域的 cookie 中。
我对这两个域都有管理访问权限,因此我可以根据需要在任一端进行更改。
这是我在 domainA.com 网站上使用的 jQuery ajax 调用:
$.ajax({
url: "https://domainB.com/endpoint",
xhrFields: {
withCredentials: true
}}
)
我还尝试了其他属性,例如:
crossDomain: truedataType: "json"
domainB.com 站点收到请求,但请求中没有 cookie。
请求头如下:
host -> domainB-host
connection -> close
accept -> */*
sec-fetch-dest -> empty
user-agent -> Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
dnt -> 1
origin -> https://domainA.com
sec-fetch-site -> cross-site
sec-fetch-mode -> cors
referer -> https://domainA.com/
accept-encoding -> gzip, deflate, br
accept-language -> en-US,en;q=0.9
在domainB.com 上,我还设置了以下响应标头:
Access-Control-Allow-Origin: https://domainA.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Origin
当CORS(我认为)正确设置时,为什么domainB.com cookie 没有在domainA.com 发出的请求中传递?
更新 1 这适用于 Firefox,但不适用于 Chrome(在 Mac 上)。我之前也曾在 Firefox 中进行过测试,但它无法正常工作。通过上述配置,它实际上在 Firefox 中可以工作。
【问题讨论】:
标签: google-chrome cookies cross-domain samesite