添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
    function getCookie(name) {
        let cookieValue = null;
        if (document.cookie && document.cookie !== '') {
            const cookies = document.cookie.split(';');
            for (let i = 0; i < cookies.length; i++) {
                const cookie = cookies[i].trim();
                // 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;

2.POST协议中增加请求头

Django 中ajex处理django403关键代码如下:

      headers: {
          "X-CSRFToken": getCookie("csrftoken"),// Django 403处理

Django官方文档也给出了使用方式:

const request = new Request(
    /* URL */,
    {headers: {'X-CSRFToken': csrftoken}}
fetch(request, {
    method: 'POST',
    mode: 'same-origin'  // Do not send CSRF token to another domain.
}).then(function(response) {
    // ...

完成的点击按钮,POST传入文件信息和其他字段信息的js代码

    // 导入数据
    $("#btnUpload").click(function() {
        console.log("btnUpload click")
        var formData = new FormData();
        var formDataOld = new FormData(document.getElementById('uploadForm'))
        var fileHtml = formDataOld.get('csv_file');
        formData.append('csv_file', fileHtml);
        formData.append("bill_month", $("#need_input_bill_month").val());
        $.ajax({
                type: "POST",
                url: "{% url 'bill:aws-info-upload' %}",
                data: formData,
                processData: false,
                contentType: false,
                headers: {
                    "X-CSRFToken": getCookie("csrftoken"),// Django 403处理
                cache: false,

参考:
Django 3.2 csrf文档

2、有道词典翻译后如下: 通常,当存在真正的跨站点请求伪造时,或者DjangoCSRF机制没有被正确使用时,就会出现这种情况。至于邮递表格,你须确保: 您的浏览器正在接受cookie。 视图函数将一个请求传递给模板的呈现方法。 在模板,每个POST表单都有一个{% csrf_token %}模板标记,目标是一个内部URL。 如果您没有使用CsrfViewMiddleware,那么您必须在任何使用csrf_token模板标签的视图以及那些接 Django接口请求返回报错:CSRF Failed: CSRF token missing or incorrect 问题分析: 这是django自带的用户验证机制。 django,会对合法的跨域访问做这样的检验,cookies里面存储的’csrftoken’,和post的header里面的字段”X-CSRFToken’作比较,只有两者匹配,才能通过跨域检验。否则会返回这个错误:CSRF Failed: CSRF token missing or incorrect django默认会有csrf验证. 我在Firefox使用REST Easy向Django的一个简单表单发出POST请求,但是它给了我一个403错误“2295csrftokenmissing or incorrect”。在这是我的views.py(因为我在代理后面使用网络):from django.shortcuts import renderimport urllib2def home(request):if request.... 在Django使用ajax post向后台传送数据时会出现403 Forbidden (CSRF token missing or incorrect.): 的报错。 第一种解决方法: 先看一下ajax使用方法: $.ajax({ url: '{% url '' %}', type: 'post', data: {... var uname = $("#uname").val(); var upwd = $("#upwd").val(); var csrftoken = $('[name="csrfmid. let cookies = document.cookie.split(','); let pattern = /csrftoken=(.*)/m; for(let j=0; j<cookies.length; j++){ if(pattern.test(cookies[j])){ var csrf = pattern.exec( cookie...