djogo服务器上的dojox.form.Uploader 403错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了djogo服务器上的dojox.form.Uploader 403错误相关的知识,希望对你有一定的参考价值。

我有一个非常简单的表单,已将上传器添加到其中。当我调用上载程序时,django返回{“详细信息”:“ CSRF失败:CSRF令牌丢失或不正确。”}这是上传器:

            var ul = new Uploader(
            {
                label:"Programmed uploader",
                multiple:false,
                uploadOnSelect:true,
                url:Environment.apiRoot + "upload/",
                headers:{
                    "Accept" : "application/json",
                    "X-CSRFToken" : dojo.cookie("csrftoken")
                }
            }).placeAt(form);

我创建了简单的“测试”按钮,该按钮调用了执行相同帖子的功能。

            new Button({
                name:"Cancel2",
                //id:"Cancel",
                label:"Cancel" ,
                placement:"secondary",
                onClick:lang.hitch(this,function(event){
                    this._testpost()
                })
            }).placeAt(form);   

这是上传者帖子中的relavent标头

Cookie djdt =隐藏; csrftoken = WwlARc9OUevblKfgNEDU2Ae4eT9z0kos; sessionid = du37rjyam6v69mw0bgctkbw708xlvc5g

这是_testpost()

    _testpost: function (){
        xhr.post({
            url: Environment.apiRoot + "upload/",
            handleAs: "json",
            postData: json.stringify(data),
            headers: {
                "Content-Type": "application/json",
                "Accept" : "application/json",
                "X-CSRFToken" : dojo.cookie("csrftoken")
            },
            loadingMessage: "Submitting  form..."
        }).then( 
            lang.hitch(this,function(result) {
                form = t._f_form;
                dojo.destroy(form);
                this._float.destroyRecursive();
                alert(result['result_text']);

                result['message'] = "Update Request Accepted";

            }),lang.hitch(this, function(err){
                form = t._f_form;
                dojo.destroy(form);
                this._float.destroyRecursive();
                topic.publish("/application/message","An error occurred.");
        }));    

这是调用_testpost函数的相关头文件

Cookie djdt =隐藏; csrftoken = WwlARc9OUevblKfgNEDU2Ae4eT9z0kos; sessionid = du37rjyam6v69mw0bgctkbw708xlvc5g

X-CSRFToken WwlARc9OUevblKfgNEDU2Ae4eT9z0kos

主要区别在于,在_testpost中,X-CSRFToken放在标题中,但是在Uploader帖子中,我没有任何方法可以放入X-CSRFToken(我的headers属性似乎只是被忽略了-我尝试过看看是否可以使它正常工作]

有没有办法将其他标头添加到上传器中?>

我有一个非常简单的表单,已将上传器添加到其中。当我调用上载程序时,django返回{“ detail”:“ CSRF失败:CSRF令牌丢失或不正确。”}这是上载程序:var ...

答案

不幸的是,dojox.form.Uploader不允许添加标题。

另一答案

我所做的(我不确定这是正确的),在django视图中,禁用了csrf检查,然后将csrf值从标题中拉出并将其与会话中保留的csrf值进行比较记录在服务器上。

另一答案

您可以使用dojo.aspect将标题添加到dojox.form.Uploader

以上是关于djogo服务器上的dojox.form.Uploader 403错误的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何将FTP服务器上的文件复制到Java中同一服务器上的目录?

Heroku 上的 Symfony:403 Forbidden 您无权访问此服务器上的 /

根据数据库上的图像检查服务器文件夹上的图像

删除FTP服务器上的文件

ABAP,解析FTP服务器上的CSV文件

Heroku 上的 Laravel 5.4。 Forbidden 您无权访问此服务器上的 /