我正在使用AngularJS构建SPA(单页应用程序),而对于FileUpload,我尝试使用Blueimp文件上传。服务器端在NodeJS中,使用csrf,因此所有请求都将使用csrf令牌(AngularJS设置的X-XSRF-TOKEN)发送到服务器。现在,当我尝试使用Blueimp上传文件时,它失败并带有
"错误:csrf令牌无效"
因为它在请求中附加必要的令牌,现在我想知道如何设置令牌。请注意,我已经使用了AngularJS,并且我没有将任何元标记设置为csrf,但该标记在cookie中可用。
谢谢!
答案 0 :(得分:3)
如果有人像我一样偶然发现这个页面,那应该是
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $.cookie("XSRF-TOKEN")
}
});
CSRF而不是XSRF。
答案 1 :(得分:2)
我已使用以下方法修复了它:
$.ajaxSetup({ headers: { 'X-XSRF-TOKEN': $.cookie("XSRF-TOKEN") } });
由于
答案 2 :(得分:0)
可以通过fileupload插件上的formData
选项将包含CSRF令牌的其他表单数据与上传请求一起传递。
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()
}]
})
答案 3 :(得分:-1)
如果我理解正确,您可以编写一个在请求标头中设置令牌的交叉点: AngularJS $http