姜戈 csrf_cookie_not_set
Django csrf_cookie_not_set
我目前正在做一个后端由 Django 处理,前端由 ReactJS 处理的项目。
以前的开发人员(他们已经不在组织中了)都是手工开发所有的API。我猜他们不知道 DjangoRestFramework。我现在的工作是 REST-ify
50 个目前正在运行的奇数 API。
我正在使用 DRFs 通用视图(列表、创建、检索...等)。
我也被分配执行DRFSimpleJWT的任务。之前的开发人员手动编写了所有用于创建令牌的函数,他们将其称为 custom authentication
.
我已经开始创建 API,我的 List 和 Retrieve API 工作正常,但每当前端开发人员对 CreateAPIView
执行 POST 请求时,他会返回一个 403 错误,描述为 csrf cookie not set
.
我的运行服务器日志文件中也出现 403 错误。
我试过禁用(评论)permission_classes
并将其更改为 AllowAny
。
然后我继续禁用 authentication_classes
或删除 session_authentication
在某些情况下,数据甚至没有通过,OPTIONS
出现在我的服务器日志中。
我检查了 settings.py
文件,发现 csrfmiddleware
被禁用了。启用它会在所有请求上产生 csrf 错误。我用谷歌搜索并使用了 cors 设置和 django 设置。没有任何效果。
我的看法很简单:
MyCreateView(generics.CreateAPIView):
queryset = ModelName.objects.all
serializer_class =MySerializer
permission_classes = [IsAuthenticated,]
authentication_classes = [BasicAuthentication, SessionAuthentication,]
我需要帮助才能使 POST 请求生效。另外,当我开始使用 SimpleJWT 时,是否需要在我的视图中指定 authentication_classes
?这与cors有关吗?
settings.py
REST_FRAMEWORK
与 DRF 文档相同。
谢谢。非常感谢您的指导。
在创建 POST、PATCH、PUT 请求时从您的前端修改您的请求 header 以包含 "X-CSRFToken"。此 header 的值应从名为 "csrftoken".
的 cookie 中读取
参考这些以获取更多信息
https://docs.djangoproject.com/en/2.2/ref/csrf/#ajax
https://www.django-rest-framework.org/topics/ajax-csrf-cors/#csrf-protection
我目前正在做一个后端由 Django 处理,前端由 ReactJS 处理的项目。
以前的开发人员(他们已经不在组织中了)都是手工开发所有的API。我猜他们不知道 DjangoRestFramework。我现在的工作是 REST-ify
50 个目前正在运行的奇数 API。
我正在使用 DRFs 通用视图(列表、创建、检索...等)。
我也被分配执行DRFSimpleJWT的任务。之前的开发人员手动编写了所有用于创建令牌的函数,他们将其称为 custom authentication
.
我已经开始创建 API,我的 List 和 Retrieve API 工作正常,但每当前端开发人员对 CreateAPIView
执行 POST 请求时,他会返回一个 403 错误,描述为 csrf cookie not set
.
我的运行服务器日志文件中也出现 403 错误。
我试过禁用(评论)permission_classes
并将其更改为 AllowAny
。
然后我继续禁用 authentication_classes
或删除 session_authentication
在某些情况下,数据甚至没有通过,OPTIONS
出现在我的服务器日志中。
我检查了 settings.py
文件,发现 csrfmiddleware
被禁用了。启用它会在所有请求上产生 csrf 错误。我用谷歌搜索并使用了 cors 设置和 django 设置。没有任何效果。
我的看法很简单:
MyCreateView(generics.CreateAPIView):
queryset = ModelName.objects.all
serializer_class =MySerializer
permission_classes = [IsAuthenticated,]
authentication_classes = [BasicAuthentication, SessionAuthentication,]
我需要帮助才能使 POST 请求生效。另外,当我开始使用 SimpleJWT 时,是否需要在我的视图中指定 authentication_classes
?这与cors有关吗?
settings.py
REST_FRAMEWORK
与 DRF 文档相同。
谢谢。非常感谢您的指导。
在创建 POST、PATCH、PUT 请求时从您的前端修改您的请求 header 以包含 "X-CSRFToken"。此 header 的值应从名为 "csrftoken".
的 cookie 中读取参考这些以获取更多信息
https://docs.djangoproject.com/en/2.2/ref/csrf/#ajax https://www.django-rest-framework.org/topics/ajax-csrf-cors/#csrf-protection