Javascript 当xhr.withCredentials=true时,为什么在HTTP post中发送cookie;
如果您在JS代码下运行,它将使用cookies向服务器发出HTTP POST请求,但POST响应被浏览器阻止,因为yahoo.com的响应中不存在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漏洞 我有什么遗漏吗 更新:这是需要
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的风险,但不是新的风险。网站需要采取行动