Token认证返回403问题求助(Axios + Django Rest Framework)
解决React + Axios调用DRF API返回403的问题
我来帮你排查这个403错误的核心原因,看下来问题出在DRF的认证配置上:
关键问题:缺少Token认证类
你在请求头里使用了Token认证方式,但你的Django配置中没有启用TokenAuthentication类,导致DRF无法识别你发送的Token,因此返回403权限错误。
修复步骤:修改settings.py
找到REST_FRAMEWORK配置块,在DEFAULT_AUTHENTICATION_CLASSES中添加rest_framework.authentication.TokenAuthentication:
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.TokenAuthentication', # 新增这一行 ], }
额外验证点
确认Token有效性:
检查你使用的Token是否属于一个活跃的用户,可以在Django Admin的Token表中查看该Token对应的用户状态是否为is_active=True。CORS中间件配置:
确保corsheaders的中间件顺序正确,在MIDDLEWARE中应该先加载CorsMiddleware,再加载CommonMiddleware:MIDDLEWARE = [ # ...其他中间件 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # ...其他中间件 ]请求头格式确认:
你当前的请求头格式Authorization: Token 27dbb4dd8299792c8c52022f829da4ecec22f437是正确的,DRF可以识别这种格式,这部分不需要修改。
完成配置修改后,重启Django服务器,再发送请求应该就能正常访问了。
内容的提问来源于stack exchange,提问作者Diego Fortes
相关产品推荐
相关产品推荐

