gpt4 book ai didi

ajax - CORS $.ajax session cookie (access-control-allow-credentials & withCredentials=true)

转载 作者:行者123 更新时间:2023-12-04 08:27:19 25 4
gpt4 key购买 nike

我意识到这个问题已经被问过十几次了,给出的每个回答都表明我做得对,但也许我遗漏了一些东西。

AJAX 像这样提供 CORS 请求......

$.ajax({
url: 'someotherdomain.com',
type: 'post',
data: {key: 'value'},
dataType: 'json',
async: false,
crossDomain: true,
beforeSend: function(xhr){
xhr.withCredentials = true;
},
success: function(x, status, xhr){

},
error: function(xhr, status, error){

}
});

PHP 像这样提供 CORS 请求......
header('Access-Control-Max-Age: 1728000');
header('Access-Control-Allow-Origin: http://someotherdomain.com');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-MD5, X-Alt-Referer');
header('Access-Control-Allow-Credentials: true');
header("Content-Type: application/json; charset=utf-8");

根据所有文档,只要设置了“Access-Control-Allow-Credentials”服务器端 header 和“withCredentials=true”客户端 header ,域之间的 session cookie 处理就应该是透明的。我错过了什么吗?

最佳答案

async: false

阻止 session cookie 在每次请求时发送回服务器。以下修复了它。
async: true

虽然这确实允许在进行跨源请求共享调用时由浏览器设置 session cookie,但我现在遇到以下情况的问题:

服务器 A 向客户端发送响应
使用 CORS 的客户端向服务器 B 发出请求
XMLHttpRequest -> PHP -> Session handler -> MySQL -> Stored Procedure 

由于 MUTEX 锁定 PHP session 管理中的异步性质,显然,要求可能会强制使用不同的 header 选项(例如 XCookie 或类似的东西)手动设置 cookie,以保持服务器 session 和客户端请求同步。

这个特殊的解决方法并不适合我,因为我相信它会为 session 劫持和 session 重放攻击向量开辟一条简单的 channel 。

使用 SSL/TLS 包装连接可能有助于防止上述情况,但就独立为客户端提供安全措施而言,我认为这还不够。

有人对此有任何想法吗?

关于ajax - CORS $.ajax session cookie (access-control-allow-credentials & withCredentials=true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13457772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com