gpt4 book ai didi

django - CSRF 失败 : CSRF token missing or incorrect

转载 作者:行者123 更新时间:2023-11-28 19:35:04 29 4
gpt4 key购买 nike

我正在使用 Django 1.7 和 django-rest-framework。

我制作了一个 API,它返回一些 JSON 数据并将其放入我的 settings.py

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',),
'DEFAULT_RENDERER_CLASSES': (
# 'rest_framework.renderers.XMLRenderer',
'rest_framework.renderers.JSONRenderer',
# 'rest_framework.renderers.BrowsableAPIRenderer',
)
}

当我进行 GET 调用时,它会返回所有数据,但是当我尝试使用 PUT/PATCH 时,我得到:

--------Response Headers---------
Status Code: 403
Date: Wed, 29 Oct 2014 18:51:42 GMT
Vary: Cookie
Server: WSGIServer/0.1 Python/2.7.8
Allow: GET, POST, PUT, PATCH, HEAD, OPTIONS
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
---------------------------------

--------Response Body-----------
{"detail": "CSRF Failed: CSRF token missing or incorrect."}
---------------------------------

这只会在我登录时发生,如果我是匿名的,我可以正确地 PUT/PATCH。

我已经尝试使用 @csrf_exempt 并且出现错误,我在设置中包含了 rest_framework.permissions.AllowAny...

我不知道发生了什么。有谁知道问题出在哪里?

最佳答案

当您使用 SessionAuthentication 时,您正在使用 Django 的身份验证,这通常需要检查 CSRF。 Django REST Framework 仅针对 SessionAuthentication 强制执行此操作,因此您必须在 X-CSRFToken header 中传递 CSRF token 。

Django documentation提供有关使用 jQuery 检索 CSRF token 并在请求中发送它的更多信息。 CSRF token 保存为名为 csrftoken 的 cookie,您可以从 HTTP 响应中检索它,具体取决于所使用的语言。

如果您无法检索 CSRF cookie,这通常表明您不应该使用 SessionAuthentication。我建议查看 TokenAuthenticationOAuth 2.0取决于您的需求。

关于django - CSRF 失败 : CSRF token missing or incorrect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639169/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com