Javascript 从jquery调用ajax到Django时未设置CSRF
从jquery向django views.index进行ajax调用时,我得到了一个未设置的CSRF cookie(我已经尝试了在其他stackoverflow文章中看到的所有内容,请参阅文章底部的列表) 我的ajax调用: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",
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