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

报错403是因为django自动开启了CSRF防御!

在settings里的设置    'django.middleware.csrf.CsrfViewMiddleware',自动开启全局CSRF防御。

如果你是jQuery在页面js里发送ajax可以参考文章:http://blog.csdn.net/wjy397/article/details/49078099

------------------------------------------------------------------------------------------------------------------------------------------------------

本文记录extjs在处理csrf防御步骤:

1.首先必须在浏览器请求页面的时候返回给浏览器的view层方法上加入@ensure_csrf_cookie 以便让浏览器cookie记录token

例如:

from django.views.decorators.csrf import requires_csrf_token,ensure_csrf_cookie

@ensure_csrf_cookie
def Login(request):
    # ...
    return render_to_response('AdminPool/Login.html', {})

 

2.然后再页面的js里,在发送ajax之前事件:

Ext.Ajax.on('beforerequest', function (conn, options) {
   if (!(/^http:.*/.test(options.url) || /^https:.*/.test(options.url))) {
     if (typeof(options.headers) == "undefined") {
       options.headers = {'X-CSRFToken': Ext.util.Cookies.get('csrftoken')};
     } else {
       options.headers.extend({'X-CSRFToken': Ext.util.Cookies.get('csrftoken')});
     }
   }
}, this);

设置请求头heades的‘X-CSRFToken’。

 

3.然后发送AJAX的post:


                    Ext.Ajax.request({
                    url: 'tianwanggaidihu',
                    method: 'POST',
                    success: function (response, opts) {
                        var responseJson = Ext.JSON.decode(response.responseText);
                        // 当后台数据同步成功时
                        if (responseJson.IsError) {
                            Ext.MessageBox.show({
                                title: "提示",
                                msg: "数据删除失败!"
                            });
                        } else {
                            store.remove(data[0]);// 页面效果
                            Ext.MessageBox.show({
                                title: "提示",
                                msg: "数据删除成功!"
                            });
                        }
                    },
                    failure: function (response, options) {
                        Ext.MessageBox.alert('提示', '数据删除错误!');
                    }

                });

程序员学习公众号:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值