我正在使用AngularJS构建SPA(单页应用程序),对于FileUpload,我正在尝试使用Blueimp File Upload。服务器端是使用csrf的NodeJS,因此所有请求都将使用csrf令牌(AngularJS设置的X-XSRF-TOKEN)发送到服务器。现在,当我尝试使用Blueimp上传文件时,它失败,并带有
“错误:无效的csrf令牌”
由于它在请求中附加了必要的令牌,现在我想知道如何设置令牌。请注意,我已经在使用AngularJS,并且没有将任何meta标签设置为csrf,但是令牌在cookie中可用。
谢谢!
我通过使用以下方法修复了它:
$.ajaxSetup({ headers: { 'X-XSRF-TOKEN': $.cookie("XSRF-TOKEN") } });
谢谢
[如果有人像我一样偶然发现此页面,应该是
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $.cookie("XSRF-TOKEN")
}
});
CSRF代替XSRF。
包括CSRF令牌的其他表单数据可以通过fileupload插件上的formData
选项与上传请求一起传递。
https://github.com/blueimp/jQuery-File-Upload/wiki/Options#formdata
$('#whatever').fileupload({
url: '/Document/Upload'
paramName: 'file',
dataType: 'json',
pasteZone: null,
formData: [{
name: 'X-CSRF-TOKEN',
value: getAntiCSRFToken()
}]
})
如果我的理解正确,您可以编写一个在请求标头中设置令牌的中间变量:AngularJS $http