Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不同浏览器中的CSRF令牌刷新_Javascript_Ajax_Django_Django Csrf_Wagtail - Fatal编程技术网

Javascript 不同浏览器中的CSRF令牌刷新

Javascript 不同浏览器中的CSRF令牌刷新,javascript,ajax,django,django-csrf,wagtail,Javascript,Ajax,Django,Django Csrf,Wagtail,我几乎是django和web开发的新手,因此面临csrf令牌的问题 先决条件:不同域上基于wagtail的网站和django rest api 我在网站上有一个登录表单(包括{%csrf\u token%}) 提交时的js脚本: function getToken(){ document.cookie = "path=/; csrftoken = {% csrf_token %}"; var xhr = new XMLHttpRequest();

我几乎是django和web开发的新手,因此面临csrf令牌的问题

先决条件:不同域上基于wagtail的网站和django rest api

我在网站上有一个登录表单(包括
{%csrf\u token%}

提交时的js脚本:

function getToken(){
        document.cookie = "path=/; csrftoken = {% csrf_token %}";
        var xhr = new XMLHttpRequest();
        xhr.open('POST', url, false);
        xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
        xhr.setRequestHeader("X-CSRFToken", $.cookie('csrftoken'));
        xhr.send(JSON.stringify({"username":document.getElementById("login").value,
                        "password":document.getElementById("password").value}));
        if (xhr.status != 200) {
            alert( "ERR" );
                    }
        else {
            alert( xhr.responseText );
            document.cookie = "token = " + JSON.parse(xhr.responseText).key;
                }
        }
在chrome中,一切都很好,但在IE和Opera中,成功登录后,它们会显示给我

403: CSRF verification failed. Request aborted. 
当我在IE和Opera中刷新页面后,一切正常,我看到我的登录用户

我还注意到:登录前和登录后csrf令牌是相同的,在其他浏览器中它会发生变化


有人能帮忙吗?

我不清楚,您是否正在尝试从一个域的表单向另一个域提交信息?假设您是,请查看此处的CORS部分: