django CSRF Failed: CSRF token m

2021-08-30  本文已影响0人  开始懂了90

jango 提交表单报错如下:

django CSRF Failed: CSRF token missing or incorrect

解决办法:

1.  打开setting.py 关于之前的csrf注释

MIDDLEWARE = [

    'django.middleware.csrf.CsrfViewMiddleware',

]

2. 在form 表中中添加{%csrf_token %}

<form class="form-horizontal" id="addCrontabForm">

                  {%csrf_token %}

</form>

3.  如果通过ajax发送的post的请求 还需增加script 配置

$(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'));

    }

});

上一篇 下一篇

猜你喜欢

热点阅读