CSRF验证失败。请求中止。当我发送POST请求时

时间:2016-03-21 08:06:51

标签: django

我从Android应用程序向我的服务器发送POST请求,但是我收到此错误:

enter image description here

POST看起来像: http://example/my_page_url/1000 1000是身份证。

这是我的观点方法:

def inventory(request, cross_id):

    text_file = open("test.txt", "w")
    text_file.write('POST Received')

    text_file.write(cross_id.__str__())
    text_file.close()

    return render(request, 'Inventory.html', {})

我的模板代码:

<form action='' method="POST">

     <button type="submit" id="btn_save" name="btn_save">Save</button>

    {% csrf_token %}

</form>

实际上,我并不需要调用模板,因为我只想在服务器上执行某些操作。但我现在调用模板只是为了防止任何错误。

我已经阅读了同一问题的其他答案,但是他们都错过了模板中的CSRF令牌或者其他方法,但我相信这里的情况有所不同。

1 个答案:

答案 0 :(得分:7)

您需要为所有POST请求添加X-CSRFToken标头。

您可以从名为csrftoken的Cookie中获取此标头的相应值。

要在Postman中进行测试,您需要启用Interceptor插件(右上角)。

安装完成后,向GET发出/admin/login/请求(确保您已从浏览器中的站点注销)。在Cookie部分,您应该看到名为csrftoken的Cookie,复制其值。

现在,将请求类型设置为POST以获取相同的网址(/admin/login),添加名为X-CSRFToken的标头,其中包含您之前复制的值。在username部分设置passwordBody字段,然后点击发送。

X-CSRFToken

如果您的POST不需要身份验证,则可以使用早期GET请求中的csrftoken