CORS $.ajax会话cookie(access-control-allow-credentials&
发布时间:2020-12-16 03:08:42 所属栏目:百科 来源:网络整理
导读:我意识到这个问题已经被问过十几次了,每个回答都表明我做得对,但也许我错过了一些东西. AJAX像这样提供CORS请求…… $.ajax({url: 'someotherdomain.com',type: 'post',data: {key: 'value'},dataType: 'json',async: false,crossDomain: true,beforeSend: f
我意识到这个问题已经被问过十几次了,每个回答都表明我做得对,但也许我错过了一些东西.
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,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”服务器端标头和“withCredentials = true”客户端标头设置,域之间的会话cookie处理应该是透明的.我错过了什么吗? async: false 阻止会话cookie在每个请求上被发送回服务器.以下修复了它. async: true 虽然这确实允许浏览器在进行跨源请求共享调用时设置会话cookie,但我现在遇到以下情况的问题: 服务器A向客户端发送响应 XMLHttpRequest -> PHP -> Session handler -> MySQL -> Stored Procedure 由于PHP会话管理中的MUTEX锁定,异步性质和显然,要求可能会强制解决使用不同的头选项(如XCookie或类似的东西)手动设置cookie以保持服务器会话和客户端请求同步. 这个特殊的工作并不适合我,因为我相信它会为会话劫持和会话重播攻击向量打开一个简单的旅行通道. 使用SSL / TLS包装的连接可能有助于防止上述情况,但就为客户端独立提供安全措施而言,我认为这不足以满足要求. 对此有何想法的人? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |