我在从jquery到django views.index进行ajax调用时没有设置CSRF cookie(我已经尝试了其他stackoverflow帖子上看到的所有内容,请参阅帖子底部的列表)
我的ajax电话:
board.delete_comment = function(){
$(this).closest("div").slideUp()
$.ajax("http://localhost:8000/"+$(this).val(),{
type: "POST",
beforeSend: function(xhr, settings) {
var csrftoken = getCookie('csrftoken')
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
},
success: function (data) {
console.log(data)
}
});
};
我的views.index功能:
@csrf_exempt
def delete_me(comment_id):
comment = get_object_or_404(Comment, pk=comment_id)
comment.delete()
return "success"
我的网址格式:
url(r'^(?P<comment_id>[0-9]+)/$', views.delete_me, name='delete'),
在javascript中调用delete_comment函数时,会触发403禁止错误。我已经尝试了在现有堆栈溢出板上看到的所有内容:
-installing and adding corsheaders to settings
-including a @csrfexempt decorator in views.index
-setting CSRF_COOKIE_SECURE to false in settings
-adding the csrftoken header to the request (per django documentation)
-setting a CSRF_TOKEN on the window in my html
似乎没有任何作用......任何人都有关于如何解决此问题的建议?或者问题是什么。
答案 0 :(得分:1)
您可能遇到跨域问题,因为您在ajax调用中对http://localhost:8000/进行了硬编码。这可能是请求被拒绝的原因。尝试替换&#39; http://localhost:8000/&#39;用&#39; /&#39;如果这是您要定位的网址。