【问题标题】:Django 403 Forbidden ErrorDjango 403 禁止错误
【发布时间】: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 调用中。

标签: ajax django http-status-code-403


【解决方案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访问它。

希望这会有所帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-20
    • 2013-06-27
    • 2013-05-25
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    相关资源
    最近更新 更多