ajax发送csrf_token的不同方式:
方式一:
在ajax发送之前,做好处理,用到了beforeSend方法,把csrf_token写入到Header头内,csrf_token去jquery.cookie内取,但是,想要去cookie内取,首先要引用jquery.cookie.js文件;
jquery.cookie.js官网:http://plugins.jquery.com/cookie/
jquery-cookie官网:http://www.bootcdn.cn/jquery-cookie/
jquery-cookie的cdn:
https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js
<script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>


//ajax在发送之前,做的header头 function csrfSafeMethod(method) { // 匹配method的请求模式,js正则匹配用test return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); }; // 为ajax请求做csrf_token $.ajaxSetup({ beforeSend:function (xhr, settings) { // 在请求头设置一次csrf_token,除了上面正则匹配到的不带csrf_token,其他的都要带 if(!csrfSafeMethod(settings.type)){ xhr.setRequestHeader("x-CSRFToken", $.cookie("csrftoken")); } } });
方式二:
在ajax发送的时候加在data里:


data:{"csrfmiddlewaretoken":$("[name='csrfmiddlewaretoken']").val(), "k1":v1, "k2":"v2",} # 这个的话,还要在body里去找{% csrf_token %} data:{'user':user,'pwd':pwd,'csrfmiddlewaretoken':'{{ csrf_token }}'}, # 这个最方便,直接在这渲染了 # for example: {% load staticfiles %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>MyQuotion</title> <link rel="stylesheet" href="{% static 'bootstrap.min.css' %}"> <script src="{% static 'jquery-3.2.1.js' %}"></script> <script src="{% static 'bootstrap.js' %}"></script> </head> <body> <div class="container"> <div class="row col-md-5 col-lg-offset-2"> {% csrf_token %} <input type="text" class="form-control" id="user"/> <input type="password" class="form-control" id="pwd"/> <button class="btn btn-default" id="sure">确定</button> </div> </div> </body> <script> $('#sure').click(function () { var user = $('#user').val(); var pwd = $('#pwd').val(); console.log(user,pwd); $.ajax({ url:'http://127.0.0.1:8055/account/login/', type: 'POST', data:{'user':user,'pwd':pwd,"csrfmiddlewaretoken":$("[name='csrfmiddlewaretoken']").val(),}, // 这一种直接在这里渲染成了字符串,所以,最简单 <!--data:{'user':user,'pwd':pwd,'csrfmiddlewaretoken':'{{ csrf_token }}'},--> success:function (data) { alert(data) } }) }) </script> </html>