我从网址调用obtain.auth_token
,如下所示
url(r'^api-token/','rest_framework.authtoken.views.obtain_auth_token')
我回来了
{
detail: "CSRF Failed: CSRF token missing or incorrect."
}
我想知道为什么会发生这种情况,因为我的印象是django-rest-framework通常是CSRF豁免
由于
答案 0 :(得分:2)
该视图使用POST。 DRF始终要求CSRF用于会话验证的POST。
出于这个原因,获取身份验证令牌等敏感请求应该使用POST。
答案 1 :(得分:1)
我有完全相同的问题。检查您是否已退出浏览器。
答案 2 :(得分:1)
我也碰到了这个。如果其他人不清楚,请添加答案。
api-token
端点。我最初尝试使用Basic Auth,假设这个令牌生成视图受到保护,但DRF实际上需要包含username
和password
字段的表单数据。以下是使用requests的工作示例:
r = requests.post('http://example.com/api-token/'), data={
'username': username,
'password': password,
})
token = r.json()['token']
答案 3 :(得分:0)
按顺序提供文档 http://www.django-rest-framework.org/topics/ajax-csrf-cors/ 你必须实现ajax-csrf如何解释 https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
...如果您使用的是angularjs,可以查看Django csrf token + Angularjs