Ajax,CSRF和DELETE

问题描述 投票:13回答:1

我使用getCookie中的django documentation函数来获取django值。

我有以下ajax调用:

csrfmiddlewaretoken

[执行此代码后,var url = reverse_removeprofile.replace(/deadbeef/, key); $.ajax({ type: "DELETE", url: url, data: "csrfmiddlewaretoken=" + getCookie("csrftoken"), success: function() { ... }, }); 引发403异常,告诉我CSRF验证失败。但是,如果我将djangotype更改为DELETE,那么POST对此很满意,一点也不抱怨。

我实际上并不能在Google上找到有用的东西,但是我发现了这张(现已关闭并固定)的故障单:django

如果我正确理解,则此问题已在1.4里程碑中得到解决。我使用django 1.4,但仍然无法通过https://code.djangoproject.com/ticket/15258请求验证CSRF令牌。

我在这里想念东西吗?

django django-csrf
1个回答
30
投票

[这似乎是jQuery的错误,是由于是否应该将DELETE数据附加到URL(如GET请求)或请求正文(如POST)而引起的困惑

请参见DELETE

您可以通过对AJAX调用使用替代CSRF方法,在请求上设置this bug report标头,来解决此问题。尝试将您的AJAX调用更改为如下形式:

X-CSRFToken
© www.soinside.com 2019 - 2024. All rights reserved.