Django 403 Forbidden Error

时间:2017-09-19 13:23:37

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

当我在同一页面中尝试使用ajax时,它可以运行。像这样;

<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>

1 个答案:

答案 0 :(得分:3)

{{ csrf_token }}作为全局变量在script标记的HTML页面中定义为全局变量: -

var generated_csrf_token = "{{ csrf_token }}";

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

headers: {'X-CSRFToken': generated_csrf_token},

但请确保将AJAX调用放在$(document).ready(function () {***here***}

中的文档就绪函数中

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

希望这会有所帮助: - )