Pab*_*blo 13 django django-csrf
我使用文档中的getCookie函数来获取值.djangocsrfmiddlewaretoken
我有以下ajax调用:
var url = reverse_removeprofile.replace(/deadbeef/, key);
$.ajax({
type: "DELETE",
url: url,
data: "csrfmiddlewaretoken=" + getCookie("csrftoken"),
success: function() { ... },
});
Run Code Online (Sandbox Code Playgroud)
执行此代码后,会django引发403异常,告诉我CSRF验证失败.但是,如果我改变了type从DELETE到POST那么django是高兴的,不抱怨的.
我真的无法在谷歌找到有用的东西,但我发现这张(现已关闭并修复)的门票:https://code.djangoproject.com/ticket/15258
如果我理解正确,那么这个问题已在1.4里程碑中修复.我使用django 1.4但仍无法通过DELETE请求验证CSRF令牌.
我在这里错过了什么吗?
Ian*_*and 30
这似乎是一个jQuery错误,由于是否应该将DELETE数据附加到URL(如GET请求)或请求正文(如POST)而引起一些混淆
请参阅此错误报告.
您可以通过使用替代CSRF方法进行AJAX调用来解决此问题,X-CSRFToken并在请求上设置标头.尝试将您的AJAX调用更改为如下所示:
$.ajax({
type: "DELETE",
url: url,
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", getCookie("csrftoken"));
}
success: function() { ... },
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4367 次 |
| 最近记录: |