【发布时间】:2013-11-27 20:31:42
【问题描述】:
我有一个 django 服务器来上传文件,当我使用浏览器时,我可以毫无问题地上传文件。
但是如果我使用 python-requests 命令,它会告诉我 CSRF 验证失败。请求中止。 python-requests代码如下:
# upload via HTTP
file = {"docfile": open(fullfilename, "rb")}
s = requests.Session()
r = s.get(dhost)
r = s.post(dhost, files=file)
如果我执行我的代码,我会得到代码 403 并且错误 CSRF 验证失败。请求中止。失败原因:
CSRF 令牌丢失或不正确。
但是如果我查看我发送的标头,我已经设置了 cookie:
CaseInsensitiveDict({'Content-Length': u'84169',
'Accept-Encoding': 'gzip, deflate, compress',
'Accept': '*/*',
'User-Agent': 'python-requests/2.0.1 CPython/2.7.3 Linux/3.6.11+',
'Cookie': 'csrftoken=GOOIsG89i5oMCJO6594algTXooxoUeoL',
'Content-Type': 'multipart/form-data; boundary=86ada00b4f6c41d5997293cce7a53b6b'})
你能告诉我我应该怎么做才能让它工作吗?
【问题讨论】:
-
这段代码是否作为 POST 执行?如果是这样,您是否使用表格?您可能需要将
{% csrf_token %}添加到表单中。
标签: django python-requests django-csrf