8

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 豁免的

谢谢

4

4 回答 4

2

我有完全相同的问题。检查您是否已退出浏览器。

于 2014-03-25T10:53:33.227 回答
2

该视图使用 POST。DRF 总是要求 CSRF 用于会话认证的 POST。

出于这个原因,获取身份验证令牌等敏感请求应使用 POST。

于 2014-01-20T01:52:00.630 回答
1

我也遇到了这个。添加一个答案,以防其他人不清楚。

  1. 确保您不是在您已经登录的上下文中请求,例如从浏览器(注销,尝试在隐身模式下,或者如果您是清除您的 cookie)。
  2. 确保您实际上api-token正确使用了端点。我最初尝试使用基本身份验证,假设这个生成令牌的视图受到保护,但 DRF 实际上期望包含和字段的表单数据。usernamepassword

这是一个使用requests的工作示例:

r = requests.post('http://example.com/api-token/'), data={
    'username': username,
    'password': password,
})
token = r.json()['token']
于 2015-01-27T22:40:10.410 回答
0

为了使用文档 http://www.django-rest-framework.org/topics/ajax-csrf-cors/ 你必须实现 ajax-csrf 如何在 https://docs.djangoproject.com/en/中解释开发/参考/csrf/#ajax

...如果您使用的是 angularjs,您可以检查它Django csrf token + Angularjs

于 2015-04-06T03:36:13.387 回答