django 笔记13 CSRF
CSRF a. CSRF原理 b. 无CSRF时存在隐患 c. Form提交(CSRF) d. Ajax提交(CSRF) CSRF请求头 x-CSRFToken HTTP_X_CSRFToken django自动加的HTTP 中间件 django.middleware.csrf.CsrfViewMiddleware 局部: @csrf_protect 需要csrf认证 不需要在setting里添加django.middleware.csrf.CsrfViewMiddleware @csrf_exempt 不需要csrf认证 全局设置 局部设置 django.middleware.csrf.CsrfViewMiddleware 在views.py里 from django.views.decorators.csrf import csrf_exempt, csrf_protect @csrf_exempt def index(request): pass 在form表单下面添加 {% csrf_token %} 如果是以ajax提交方式 $(function(){ $.ajaxSetup({ #GET HEAD OPTIONS TRACE 四种是不需要加csrftoken的 在这前需要做个判断 beforeSend: function(xhr,settings){ xhr.setRequestHeader('X-CSRFtoken', $.cookie('csrftoken')); } }); $('#btn').click(function () { $.ajax({ url: '/login/', type:"GET", data: {'user': 'root', 'pwd': '123'}, // headers: {'X-CSRFtoken': $.cookie('csrftoken')}, success:function(arg){ } }) }); })
原谅我这一生不羁放纵爱自由