Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome jQuery不发送cookie的跨域ajax请求_Google Chrome_Cookies_Cross Domain_Samesite - Fatal编程技术网

Google chrome jQuery不发送cookie的跨域ajax请求

Google chrome jQuery不发送cookie的跨域ajax请求,google-chrome,cookies,cross-domain,samesite,Google Chrome,Cookies,Cross Domain,Samesite,互联网上充斥着这种类型的请求,但我再次提出,因为所有的答案似乎都在2014年左右。我也有类似的问题,但旧的解决方案现在都不起作用,所以我不确定2020年(以及以后)是否需要新的解决方案 我正试图从domainA.com打电话到domainB.com。用户在domainB.com上进行身份验证,该身份验证存储在该域的cookie中 我对这两个域都有管理权限,因此我可以根据需要在任意一端进行更改 下面是我在domainA.com网站上使用的jQuery ajax调用: $.ajax({ ur

互联网上充斥着这种类型的请求,但我再次提出,因为所有的答案似乎都在2014年左右。我也有类似的问题,但旧的解决方案现在都不起作用,所以我不确定2020年(以及以后)是否需要新的解决方案

我正试图从
domainA.com
打电话到
domainB.com
。用户在
domainB.com
上进行身份验证,该身份验证存储在该域的cookie中

我对这两个域都有管理权限,因此我可以根据需要在任意一端进行更改

下面是我在
domainA.com
网站上使用的jQuery ajax调用:

$.ajax({
    url: "https://domainB.com/endpoint",
    xhrFields: {
        withCredentials: true
    }}
)
我还尝试了其他属性,例如:

  • crossDomain:true
  • 数据类型:“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
cookies没有在
domainA.com
发出的请求中传递吗

更新1
这在Firefox中有效,但在Chrome(Mac)中无效。我以前也曾在Firefox中进行过测试,但它不起作用。通过上述配置,它实际上在Firefox中也能工作。

结果表明这与Chrome在80版中的变化有关:

特洛伊·亨特写了一篇很好的文章

简而言之,现在将传递的唯一cookie是那些设置了
SameSite=None
Secure
的cookie。因此,cookie需要如下设置:

设置Cookie:Cookie name=Cookie值;SameSite=无;安全

这些现在是Chrome为跨站点请求传递的唯一cookie