django中使用jquery ajax post数据出现403错误的解决办法(两种方法)
更新时间:2015年09月16日 10:24:12 作者:shangliuyan
在django中,使用jquery ajax post数据,会出现403的错误,大家知道该如何解决吗?下面由脚本之家小编给大家分享两种解决办法,需要的朋友可以参考下
在django中,使用jquery ajax post数据,会出现403的错误
方法一:
如果用jQuery来处理ajax的话,Django直接送了一段解决问题的代码。把它放在一个独立的js文件中,在html页面中都引入即可。注意这个js文件必须在jquery的js文件引入之后,再引入即可
$(document).ajaxSend(function(event, xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
function sameOrigin(url) {
// url could be relative or scheme relative or absolute
var host = document.location.host; // host + port
var protocol = document.location.protocol;
var sr_origin = '//' + host;
var origin = protocol + sr_origin;
// Allow absolute or scheme relative URLs to same origin
return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
(url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
// or any other URL that isn't scheme relative or absolute i.e relative.
!(/^(\/\/|http:|https:).*/.test(url));
}
function safeMethod(method) {
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
});
方法二:
在处理post数据的view前加@csrf_exempt装饰符
例如
@csrf_exempt
def profile_delte(request):
del_file=request.POST.get("delete_file",'')
以上通过两种方法解决了django ajax post 403错误,当然解决方法也不止这两种,欢迎多多分享自己的见解,本文写的不好,还请见谅,谢谢。
相关文章
Ajax请求过程中下载文件在FireFox(火狐)浏览器下的兼容问题
最近做了个项目,其中有项目需求是这样的,点击一个文件链接下载该文件,同时向后台发送请求,在开发过程中问题百出,小编把问题总结分享在脚本之家平台,供大家参考2016-01-01


最新评论