2016-03-21 143 views
1

我送从一个Android应用程序中的POST请求到我的服务器,但我得到这个错误:CSRF验证失败。请求中止。当我发送POST请求

enter image description here

的POST样子: http://example/my_page_url/1000 凡1000是一ID。

这是我的观点方法:

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标记或视图方法中的其他内容,但我相信这里的情况不同。

+0

你真的发布该表单或其他东西吗? – Sayse

+0

不, POST来自android应用程序。 而对于测试,我现在从Postman应用程序发布以获取错误消息。 –

+0

那么是的,你会的,你需要在你的发布请求中包含一个有效的csrf标记 – Sayse

回答

2

您需要将X-CSRFToken标题添加到所有POST请求。

您可以从名为csrftoken的cookie中为此标头获取适当的值。

要在Postman中测试此功能,您需要启用拦截器插件(右上角)。

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

现在,请将同一个网址(/admin/login)的请求类型设置为POST,并使用您之前复制的值添加名为X-CSRFToken的标头。在Body部分设置usernamepassword字段并点击发送。

X-CSRFToken

如果你的POST不需要身份验证,可以从更早的GET请求使用csrftoken

相关问题