Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jquery调用ajax到Django时未设置CSRF_Javascript_Jquery_Python_Ajax_Django - Fatal编程技术网

Javascript 从jquery调用ajax到Django时未设置CSRF

Javascript 从jquery调用ajax到Django时未设置CSRF,javascript,jquery,python,ajax,django,Javascript,Jquery,Python,Ajax,Django,从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",

从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)
    }
});
};
My views.index函数:

@csrf_exempt
def delete_me(comment_id):
    comment = get_object_or_404(Comment, pk=comment_id)
    comment.delete()
    return "success"
我的URL模式:

url(r'^(?P<comment_id>[0-9]+)/$', views.delete_me, name='delete'),

似乎什么都不管用。。。有人对如何解决这个问题有什么建议吗?或者问题是什么

您可能会遇到跨域问题,因为您正在ajax调用中硬编码。这可能就是请求被拒绝的原因。如果这是您要定位的url,请尝试将“”替换为“/”

由于您有
csrf\u export
,所以令牌根本不重要,您是否有多个python实例在运行?您确定此请求正在路由到该视图吗?您是否有其他url模式可以单独匹配ID?@Sayse没有一个python实例running@Daniel罗斯曼:是的,请求被发送到正确的视图。我对此表示怀疑。当您显式地将CSRF标记为“豁免”时,您不仅会看到CSRF错误,而且还会看到TypeError,因为您没有返回HttpResponse。非常感谢!这解决了问题。这是有道理的,因为我必须删除的!此.crossDomain条件的计算结果为false。我最近遇到了相同的问题。很高兴它帮助了你。和平
-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