我有一个非常简单的表单,已将上传器添加到其中。当我调用上载程序时,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
。