我目前正在开发一个项目,其中后端由 Django 处理,前端由 ReactJS 处理。
以前的开发人员(他们不再在组织中)已经手动开发了所有 API。我猜他们不知道 DjangoRestFramework。我现在的工作是REST-ify
50 多个目前正在运行的 API。
我正在使用DRF通用视图(列表、创建、检索...等)。
我还被分配了实现DRFSimpleJWT的任务。以前的开发人员手动编写了所有用于创建令牌的函数,他们称之为custom authentication
.
我已经开始创建 API,我的 List 和 Retrieve API 工作正常,但是每当前端开发人员在 a 上执行 POST 请求时CreateAPIView
,他都会收到带有 description 的 403 错误csrf cookie not set
。
我的 runserver 日志文件也出现 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 文档相同。
谢谢。非常感谢指导。