##遇到的问题前端
请求发送后,服务端无响应
Django对于POST请求会检查请求来源,表单方式提交时:ajax
{% csrf_token %}
标签;@csrf_exempt
;Jquery POST 方式提交时,在服务端添加了 @csrf_exempt ,在Django1.5版本后,没法直接经过POST获取参数,经过raw_data = request.body
获取数据时,出现以下错误提示:json
Exception: You cannot access body after reading from request's data streamcookie
其实这个提示的意思是在获取body数据前,数据流已经被读过;问题就出在 @csrf_exempt 上,Django提早对request作了读取验证操做,所以问题就来了:Django服务端要接收POST请求,须要支持csrf_exempt,但添加这个前置后,又没法获取POST参数了。函数
解决办法:不使用服务端的@csrf_exempt前置说明,前端添加csrftoken,让服务端能够接收到POST请求。code
$.ajaxSetup({ dataType: "json",
beforeSend: function(xhr, settings){
var csrftoken = $.cookie('csrftoken');
xhr.setRequestHeader("X-CSRFToken", csrftoken);
},
});orm
为Ajax添加预处理,保证每次POST请求时,自动发送csrftoken,这样就能够在服务端正常处理POST数据了。csrf
生命在于折腾~~token