Django withCredentials:true的Ajax调用未在请求中发送cookie

Django withCredentials:true的Ajax调用未在请求中发送cookie,django,ajax,session-cookies,django-cors-headers,Django,Ajax,Session Cookies,Django Cors Headers,我的设想: example.com是用户正在访问的django页面。会话由服务器设置。现在,我在另一个名为xyz.com的域上有了前端应用程序,现在,我需要在example.com上调用API,所以我尝试使用凭据为true的进行ajax调用。但它似乎并没有在请求中发送cookie“sessionId” 我已经看到一些堆栈溢出的答案,但建议的答案不起作用 我一直在尝试: 我的后端是用Django编写的,所以我尝试设置 CORS_ALLOW_CREDENTIALS = True # Cros

我的设想: example.com是用户正在访问的django页面。会话由服务器设置。现在,我在另一个名为xyz.com的域上有了前端应用程序,现在,我需要在example.com上调用API,所以我尝试使用凭据为true的
进行ajax调用。但它似乎并没有在请求中发送cookie“sessionId”

我已经看到一些堆栈溢出的答案,但建议的答案不起作用

我一直在尝试: 我的后端是用Django编写的,所以我尝试设置

CORS_ALLOW_CREDENTIALS = True
    # Cross Origin Request Settings (CROS)
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
    'GET',
    'POST',
    'PUT',
    'PATCH',
    'DELETE',
    'OPTIONS'
)
CORS_ALLOW_HEADERS = (
    'x-requested-with',
    'content-type',
    'accept',
    'origin',
    'authorization',
    'x-csrftoken',
    'cache',
    'cookie',
)

CORS_ORIGIN_WHITELIST = [
    '*'
]

SESSION_COOKIE_HTTPONLY = False

SESSION_COOKIE_DOMAIN = 'example.com'
我正在使用ajax在example.com上进行api调用

jQuery.ajax({
 url: "http://example.com/api/v1/admin/settings/",
 dataType: 'json',
 xhrFields: { withCredentials: true },
 success: function(data) {
 console.log(data);
 }
});

我回答我的问题是为了在有人陷入同样的情况时能有所帮助

我发现在django
会话中,COOKIE\u SAMESITE
默认为
Lax

“Lax”(默认设置):为希望在用户从外部链接到达后维护用户登录会话的网站提供安全性和可用性之间的平衡

在GitHub场景中,当 跟踪来自外部网站的常规链接并在中被阻止 有CSRF倾向的请求方法(例如POST)

所以我必须在设置中将其设置为“无”,以允许浏览器发送cookie

SESSION_COOKIE_SAMESITE = None

参考文档

我正在回答我的问题,以便在有人遇到同样情况时能有所帮助

我发现在django
会话中,COOKIE\u SAMESITE
默认为
Lax

“Lax”(默认设置):为希望在用户从外部链接到达后维护用户登录会话的网站提供安全性和可用性之间的平衡

在GitHub场景中,当 跟踪来自外部网站的常规链接并在中被阻止 有CSRF倾向的请求方法(例如POST)

所以我必须在设置中将其设置为“无”,以允许浏览器发送cookie

SESSION_COOKIE_SAMESITE = None
参考文件