Django 403 禁止错误

Posted

技术标签:

【中文标题】Django 403 禁止错误【英文标题】:Django 403 Forbidden Error 【发布时间】:2018-02-28 07:29:10 【问题描述】:

当我在同一页面中尝试 ajax 到 html 时,它可以工作。像这样;

<html>
    <head>
     ...
    </head>
    <body>
     ....
     <script>

    $.ajax(
        url: /test/,
        method: 'POST',
        headers: 'X-CSRFToken': ' csrf_token ',
        data:  name: a, surname: b,
        dataType: 'json',
        success: function (data) 
            getList(data);
        
    );
    </script>
  </body>
</html>

当我尝试调用与外部相同的 javascript 时。它不起作用。为什么?

<html>
    <head>
     ...
    </head>
    <body>
     ....
     <script src="% static 'js/test.js' %"></script>
  </body>
</html>

【问题讨论】:

你在django中配置好静态文件了吗? 静态文件配置正确。我有 403 错误。 The docs have a solution for this 自动将 CSRF 令牌添加到所有 AJAX 调用中。 【参考方案1】:

csrf_token 定义为HTML页面中script标签中的全局变量,如下所示:-

var generated_csrf_token = " csrf_token ";

然后在你的 .js 文件中调用它,

headers: 'X-CSRFToken': generated_csrf_token,

但请确保将 AJAX 调用放在 $(document).ready(function () ***here*** 中的文档就绪函数中

这样你就可以在任何js文件中使用名称generated_csrf_token访问它。

希望这会有所帮助:-)

【讨论】:

以上是关于Django 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

Django/AWS - 调用 HeadObject 操作时发生错误(403):禁止

Django + ajax(jquery):http错误代码403(禁止)[关闭]

Ajax 发布 Django Rest Framework 出现 403 禁止错误

Django ajax GET 403(禁止)

django ajax 发布 403 被禁止

Django - 使用 ExtJS 发布 ajax 请求禁止 403