将csrf令牌传递给blueimp文件上传

问题描述 投票:3回答:4

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

“错误:无效的csrf令牌”

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

谢谢!

jquery angularjs node.js csrf blueimp
4个回答
3
投票

我通过使用以下方法修复了它:

$.ajaxSetup({
    headers: {
        'X-XSRF-TOKEN': $.cookie("XSRF-TOKEN")
    }
});

谢谢


3
投票

[如果有人像我一样偶然发现此页面,应该是

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $.cookie("XSRF-TOKEN")
    }
});

CSRF代替XSRF。


0
投票

包括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()
            }]
        })

-1
投票

如果我的理解正确,您可以编写一个在请求标头中设置令牌的中间变量:AngularJS $http

© www.soinside.com 2019 - 2024. All rights reserved.