美文网首页
django CSRF Failed: CSRF token m

django CSRF Failed: CSRF token m

作者: 开始懂了90 | 来源:发表于2021-08-30 17:13 被阅读0次

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

    }

});

相关文章

网友评论

      本文标题:django CSRF Failed: CSRF token m

      本文链接:https://www.haomeiwen.com/subject/hqsoiltx.html