我从Android应用程序向我的服务器发送POST请求,但是我收到此错误:
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令牌或者其他方法,但我相信这里的情况有所不同。
答案 0 :(得分:7)
您需要为所有POST请求添加X-CSRFToken
标头。
您可以从名为csrftoken
的Cookie中获取此标头的相应值。
要在Postman中进行测试,您需要启用Interceptor插件(右上角)。
安装完成后,向GET
发出/admin/login/
请求(确保您已从浏览器中的站点注销)。在Cookie部分,您应该看到名为csrftoken
的Cookie,复制其值。
现在,将请求类型设置为POST
以获取相同的网址(/admin/login
),添加名为X-CSRFToken
的标头,其中包含您之前复制的值。在username
部分设置password
和Body
字段,然后点击发送。
如果您的POST不需要身份验证,则可以使用早期GET请求中的csrftoken
。