Javascript 当xhr.withCredentials=true时,为什么在HTTP post中发送cookie;

Javascript 当xhr.withCredentials=true时,为什么在HTTP post中发送cookie;,javascript,xmlhttprequest,cors,Javascript,Xmlhttprequest,Cors,如果您在JS代码下运行,它将使用cookies向服务器发出HTTP POST请求,但POST响应被浏览器阻止,因为yahoo.com的响应中不存在Access Control Allow Credentials:trueheader 我的问题是,为什么浏览器允许带有cookie的POST请求而不进行预处理,因为xhr.withCredentials=true发送cookie 即使浏览器不允许JS访问POST请求的响应,也会对服务器造成损坏 这看起来像是CSRF漏洞 我有什么遗漏吗 更新:这是需要

如果您在JS代码下运行,它将使用cookies向服务器发出HTTP POST请求,但POST响应被浏览器阻止,因为yahoo.com的响应中不存在
Access Control Allow Credentials:true
header

我的问题是,为什么浏览器允许带有cookie的POST请求而不进行预处理,因为xhr.withCredentials=true发送cookie

即使浏览器不允许JS访问POST请求的响应,也会对服务器造成损坏

这看起来像是CSRF漏洞

我有什么遗漏吗

更新:这是需要CSRF令牌的情况吗

var xhr=new-XMLHttpRequest();
xhr.onreadystatechange=函数(){
if(xhr.readyState==4){
如果((xhr.status>=200&&xhr.status<300)| | xhr.status==304){
console.log(xhr.responseText);
}否则{
log(“请求未成功:+xhr.status”);
}
}
};
xhr.withCredentials=true;
xhr.open(“post”https://yahoo.com/example“,对);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xhr.send(“a=5”)

你好


只要提交表单,就可以使用application/x-www-form-urlencoded数据向任何URL发出POST请求

XHR和co不会改变这一点

没有必要在那里增加额外的安全措施,因为那匹马已经逃跑了

因此,是的,有CSRF的风险,但不是新的风险。网站需要采取行动