一尘不染

jQuery和Django CSRF令牌

django

我有2个html页面。

父页面和子页面。子页面包含一个提交按钮,该按钮在父页面上运行代码以提交Ajax消息。

我使用$ .load()方法加载子页面,然后在单击按钮时运行$ .ajax .POST方法。此post方法仅将JSON字符串传递给Python代码。

当我在除IE以外的任何浏览器上执行此操作时,它工作正常。但是,当我在IE中运行此代码时。我收到有关CSRF令牌的Python / Django错误。

我认为原因是因为子页面只是正在运行服务器端代码的当前页面本身的刷新。

有谁知道我应该如何去做这个工作。


阅读 269

收藏
2020-04-02

共1个答案

一尘不染

你没有通过POST传递csrf令牌。尝试做我在数据中所做的事情。那就是获取csrf令牌(或你自己的方法)并在你的参数中传递它。

$.ajax({
    url : url,
    type: "POST",
    data : {csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value},
    dataType : "json",
    success: function( data ){
        // do something
    }
});
2020-04-02