Google chrome jQuery不发送cookie的跨域ajax请求
互联网上充斥着这种类型的请求,但我再次提出,因为所有的答案似乎都在2014年左右。我也有类似的问题,但旧的解决方案现在都不起作用,所以我不确定2020年(以及以后)是否需要新的解决方案 我正试图从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
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版中的变化有关:
SameSite=None
和Secure
的cookie。因此,cookie需要如下设置:
设置Cookie:Cookie name=Cookie值;SameSite=无;安全
这些现在是Chrome为跨站点请求传递的唯一cookie