我见过人们在尝试发出远程Ajax请求时收到禁止错误的情况,但我正在发出本地请求,并且我的中间件中也启用了CSRF。
errorThrown返回“禁止的”
我认为问题可能是我试图将此内容发送到普通视图(当前页面)……我不确定我的预处理器是否返回到视图以重新呈现页面。或者它是否直接返回到我当前的页面。(不要认为我解释得很好)
希望这能让你对发生的事情有一个足够好的了解。任何/所有的帮助都是非常感谢的。
.ajax:
jQuery.ajax({
type: "POST",
dataType: "json",
data: dataString,
success: function(json) {
jQuery(".signup").attr('disabled', false);
$('.success').show();
console.log(json.message);
},
error: function(jqXHR, textStatus, errorThrown) {
jQuery(".signup").attr('disabled', false);
$('.fail').show().append(errorThrown);
console.log(textStatus);
}
});
发布于 2011-05-31 00:23:33
即使请求发往相同的域,也需要CSRF令牌。这里有向AJAX请求添加CSRF令牌的代码(使用jQuery):
https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/#ajax
这个链接指向1.7版本,如果你使用的是不同版本的Django,你可以从右下角的浮动菜单中选择你的版本。
发布于 2011-05-30 23:49:48
如果你打开了csrf,你会得到403个错误,试着添加views.py
,看看是不是这导致的:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
view class/method
发布于 2016-10-18 02:13:17
从这里下载并包含jQuery.Cookie:http://plugins.jquery.com/cookie/
然后,添加beforeSend
函数并发送csrf token,如下所示:
jQuery.ajax({
type: "POST",
dataType: "json",
data: dataString,
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken'));
},
success: function(json) {
jQuery(".signup").attr('disabled', false);
$('.success').show();
console.log(json.message);
},
error: function(jqXHR, textStatus, errorThrown) {
jQuery(".signup").attr('disabled', false);
$('.fail').show().append(errorThrown);
console.log(textStatus);
}
});
https://stackoverflow.com/questions/6178048
复制相似问题