将csrf标记传递给blueimp fileupload

时间:2014-12-03 07:30:41

标签: jquery angularjs node.js csrf blueimp

我正在使用AngularJS构建SPA(单页应用程序),而对于FileUpload,我尝试使用Blueimp文件上传。服务器端在NodeJS中,使用csrf,因此所有请求都将使用csrf令牌(AngularJS设置的X-XSRF-TOKEN)发送到服务器。现在,当我尝试使用Blueimp上传文件时,它失败并带有

  

"错误:csrf令牌无效"

因为它在请求中附加必要的令牌,现在我想知道如何设置令牌。请注意,我已经使用了AngularJS,并且我没有将任何元标记设置为csrf,但该标记在cookie中可用。

谢谢!

4 个答案:

答案 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