【发布时间】:2016-10-27 04:38:51
【问题描述】:
我使用requests 发送请求。
import requests
def print(req):
print('{}\n{}\n{}\n\n{}'.format(
'-----------START-----------',
req.method + ' ' + req.url,
'\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
req.body,
))
print "----------END------------"
try:
req = requests.Request('GET',
'https://myip/myproject/upload/token',
headers={'Authorization': 'Token 401f7ac837a',
})
prepared = req.prepare()
print(prepared)
except Exception as e:
print "Exception:", e
输出:
-----------START-----------
GET https://myip/myproject/upload/token
Authorization: Token 401f7ac837a
None
----------END------------
但是在我打印了request.META之后,就有了
META:{u'CSRF_COOKIE': u'YGzoMaNEQJz1Kg8yXAwjJt6yNuT9L'
什么设置了 CSRF_COOKIE? 欢迎任何 cmets。谢谢
更新
(1) 从doc,它说This cookie is set by CsrfViewMiddleware,这意味着CSRF cookie设置在后端并在响应中设置为前端(CSRF cookie:服务器->浏览器)。为什么它还说对于所有未使用 HTTP GET、HEAD、OPTIONS 或 TRACE 的传入请求,必须存在 CSRF cookie?为什么它会出现在我的 request.META 中? (CSRF cookie:浏览器 -> 服务器???)
(2) 它说**在所有传出的 POST 表单中都存在一个名为“csrfmiddlewaretoken”的隐藏表单字段。该字段的值为 CSRF cookie 的值。
这部分由模板标签完成。 **
模板标签何时以及如何做到这一点?
【问题讨论】:
标签: django csrf django-csrf