我试着发布参数,比如
jQuery.ajax(
{
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': "{content:'xxx'}",
'dataType': 'json',
'success': rateReviewResult
}
);但是,Django返回了Forbidden 403. CSRF verification failed. Request aborted.,我正在使用'django.middleware.csrf.CsrfViewMiddleware',无法找到如何在不损害安全性的情况下防止这个问题。
发布于 2011-06-30 10:42:07
您可以通过两种不同的方式发出AJAX post请求:
@csrf_exempt来完成,如下所示:
从django.views.decorators.csrf csrf_exempt @csrf_exempt def your_view_name(请求):.getCookie函数从cookie中检索csrf令牌。我使用以下实现:
函数getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf(c_name + "=");if (c_start != -1) { c_start = c_start + c_name.length + 1;c_end = document.cookie.indexOf(";",c_start);如果(c_end == -1) c_end = document.cookie.length;返回未转义(document.cookie.substring(c_start,c_end));}返回“;}
另外,用于访问cookie的jQuery 有一个插件,类似于:
// set cookie $.cookie(“炊事名称”,“炊事名称”);//读取cookie var myCookie =$.cookie(“cookiename”);//删除cookie $.cookie(“cookiename”,null);发布于 2011-07-29 04:10:08
我发现的最简单的方法是在数据中包含{{csrf_token}}值:
jQuery.ajax(
{
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': {
'content': 'xxx',
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
'dataType': 'json',
'success': rateReviewResult
}
);发布于 2012-04-30 15:29:18
https://stackoverflow.com/questions/6506897
复制相似问题