gpt4 book ai didi

javascript - 从 jquery 到 Django 进行 ajax 调用时未设置 CSRF

转载 作者:行者123 更新时间:2023-11-29 23:53:27 25 4
gpt4 key购买 nike

当从 jquery 调用 ajax 到 django views.index 时,我得到一个 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

似乎没有任何效果...有人对如何解决此问题有建议吗?或者可能是什么问题。

最佳答案

您可能遇到跨域问题,因为您正在硬编码 http://localhost:8000/在你的ajax调用中。这可能就是请求被拒绝的原因。尝试替换“http://localhost:8000/” ' 如果这是您要定位的网址,则使用 '/'。

关于javascript - 从 jquery 到 Django 进行 ajax 调用时未设置 CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42223343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com