Javascript Django Rest Framework在编辑用户时返回403禁止,但在未以任何用户身份登录时工作
我正在尝试使用Django Rest w/React前端对我的用户模型发出PUT请求,以编辑用户名、个人简历等 当我通过django rest客户端在url上发出PUT请求时,它不会出现任何问题。在前端,当我没有登录到任何django用户时,我可以通过AXIOS发送PUT请求,而不会出现任何问题 一旦我登录到任何django用户,即使拥有超级用户权限,我的PUT请求也会出现403禁止错误 以下是我的视图.py:Javascript Django Rest Framework在编辑用户时返回403禁止,但在未以任何用户身份登录时工作,javascript,python,django,django-rest-framework,http-status-code-403,Javascript,Python,Django,Django Rest Framework,Http Status Code 403,我正在尝试使用Django Rest w/React前端对我的用户模型发出PUT请求,以编辑用户名、个人简历等 当我通过django rest客户端在url上发出PUT请求时,它不会出现任何问题。在前端,当我没有登录到任何django用户时,我可以通过AXIOS发送PUT请求,而不会出现任何问题 一旦我登录到任何django用户,即使拥有超级用户权限,我的PUT请求也会出现403禁止错误 以下是我的视图.py: class RetrieveUpdateDestroyUser(RetrieveUp
class RetrieveUpdateDestroyUser(RetrieveUpdateDestroyAPIView):
serializer_class = UserCreateUpdateSerializer
queryset = CustomUser.objects.all()
lookup_field = 'id'
permission_classes = (AllowAny,)
def update(self, request, *args, **kwargs):
"""
PUT and UPDATE requests handled by this method.
"""
return super().update(request, *args, **kwargs)
在我的前端,这是我发出PUT请求的方式(PUT请求通过axios完成):
export类UserProxy扩展了BackendProxy{
updateUser(updateUser,用户ID){
let参数=`user/${userID}`
返回新承诺((解决、拒绝)=>{
this.putRequest(updateUser,参数)
.then(response=>{resolve(response)})
.catch(错误=>{
console.log(错误)
拒绝(错误)
})
});
}
}
导致这种情况的一个原因是您使用的是SessionAuthentication。匿名用户在身份验证过程的早期获得“身份验证”。经过身份验证的用户需要对CSRF进行额外检查。如果失败,将抛出HTTP403
在我的例子中,我意识到我应该使用GET,而CSRF不适用()。非常感谢,我最终解决了它,正如您所说,这是一个CSRF问题。如果有人在寻找答案,那就在我的个人资料上