django使用ajax post数据403错误解决方法 (tip)

原创 2012年03月29日 13:56:12

在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的CSRF保护引起的403 FORBIDDEN

用Django写了一个API,专门处理客户端发来的POST请求。结果每一次客户端JS发送POST请求,都得到403的Error。Google搜“django 403 forbidden ajax po...

ExtJs通过AJAX发送Post给django后台报错403!

报错403是因为django自动开启了CSRF防御! 在settings里的设置    'django.middleware.csrf.CsrfViewMiddleware',自动开启全局CSRF防...
  • wjy397
  • wjy397
  • 2015年10月13日 14:55
  • 711

SpringMvc+ajax跨域请求时,出现options类型的请求并返回403的解决方案

在使用$.ajax({ url:'http://127.0.0.1:8081/rest/ccxxx/xxxx', type:'POST', dataT...

chrome ajax请求报错403解决

在浏览器 属性--->快捷方式---->目标中,添加"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-w...

django中使用jquery ajax post数据出现403错误的解决办法(两种方法)

方法一: 在发送post请求的html页面前加入{% csrf_token %} 方法二: 在处理post数据的view前加@csrf_exempt装饰符 例如 ? 1 2 3 ...

django下ajax请求403(FORBIDDEN)的解决办法

环境 django 1.8.3 错误描述 POST http://localhost:8000/ajax_query_data/ 403 (FORBIDDEN) 解决办法 django官方文档上如下内...
  • xxm524
  • xxm524
  • 2015年08月08日 16:31
  • 4410

用POST访问时,返回403错误

request.Method要设置为大写的POST,否则会返回403错误 POST方法,也可能在服务器端无法取到POST的数据,所以还得把ContentType设置为application/x-ww...

Spring MVC Post请求返回403错误,Get请求却正常?

困惑:很奇怪,明明在方法上面配置了RequestMethod.POST,POST表单提交却返回403状态码,可是使用GET方式却没问题啊!!!@RequestMapping(value="***", ...

django在接受post请求时显示403forbidden

最近在做一个项目需要用到Django框架在测试Django的时候发现一个问题,就是按照一般教程设置好URL的mapping之后,使用get请求总能得到正确的回应,但是在使用post请求时,却根本无法得...

springboot ajax 提交403错误

由于开启了csrf 我用ajax post上传图片出现了403错误 $('#input-app-icon').change(function () { var formdata = new ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:django使用ajax post数据403错误解决方法 (tip)
举报原因:
原因补充:

(最多只允许输入30个字)