Django评论CSRF错误

Django评论CSRF错误,django,django-rest-framework,csrf,django-comments,django-rest-auth,Django,Django Rest Framework,Csrf,Django Comments,Django Rest Auth,获取csrf错误我不知道如何修复,我有rest auth工作,用户可以像这样更新其详细信息: 但使用相同的csrf令牌错误,我得到了这个csrf错误: 我想消除/comments/post/endpoint上的这个错误,这样这个端点的行为类似于/rest auth/user/view,它接受“Authorization:Token 792b5fb27b4fe805e895c91274f26b6ab13cb654”头字段,以向经过身份验证的用户提供相关数据 以下是csrf相关decotaros

获取csrf错误我不知道如何修复,我有rest auth工作,用户可以像这样更新其详细信息:

但使用相同的csrf令牌错误,我得到了这个csrf错误:

我想消除/comments/post/endpoint上的这个错误,这样这个端点的行为类似于/rest auth/user/view,它接受“Authorization:Token 792b5fb27b4fe805e895c91274f26b6ab13cb654”头字段,以向经过身份验证的用户提供相关数据

以下是csrf相关decotaros在屏幕截图中显示的各个视图上的应用: 从/comments/post/endpoint

@csrf_protect
@require_POST
def post_comment(request, next=None, using=None):
    # Fill out some initial data fields from an authenticated user, if present
    data = request.POST.copy()
    if request.user.is_authenticated():
        if not data.get('name', ''):
            data["name"] = request.user.get_full_name() or request.user.get_username()
        if not data.get('email', ''):
            data["email"] = request.user.email
@api_view(['GET'])
@permission_classes((IsAuthenticated, ))
def get_user(request, **kwargs):
    pk = request.data['pk']

    user = MyUser.objects.get(pk=pk)
    serializers = UsersSerializer(user)
    return Response(serializers.data)
从/rest auth/user/endpoint

@csrf_protect
@require_POST
def post_comment(request, next=None, using=None):
    # Fill out some initial data fields from an authenticated user, if present
    data = request.POST.copy()
    if request.user.is_authenticated():
        if not data.get('name', ''):
            data["name"] = request.user.get_full_name() or request.user.get_username()
        if not data.get('email', ''):
            data["email"] = request.user.email
@api_view(['GET'])
@permission_classes((IsAuthenticated, ))
def get_user(request, **kwargs):
    pk = request.data['pk']

    user = MyUser.objects.get(pk=pk)
    serializers = UsersSerializer(user)
    return Response(serializers.data)

您使用了错误的内容类型。请将其更改为
application/json
,然后重试。

您使用了错误的内容类型。请将其更改为
application/json
,然后重试。

我认为您使用的是django rest框架,默认情况下,该框架附带csfr令牌豁免,但postman正在发送csfr令牌,这就是您收到该错误的原因


清理cookies可能会解决问题。

我认为您使用的是django rest框架,默认情况下该框架附带csfr令牌豁免,但postman正在发送一个csfr令牌,这就是您收到该错误的原因


清理cookies可能会解决此问题。

端点的装饰器不同,因此需要相应地调整标头。 对于您的/rest auth/视图,需要WWW-Authenticate头


comments view/comments/endpoint具有csrf_protect decorators,这意味着标头必须与cookie中返回的csrf令牌匹配,正如Fede在标头中提到的,您只需要具有cookie中匹配值的“X-CSRFToken”

端点的装饰器不同,因此需要相应地调整标头。 对于您的/rest auth/视图,需要WWW-Authenticate头


comments view/comments/endpoint具有csrf_protect decorators,这意味着标头必须与cookie中返回的csrf令牌匹配,正如Fede在标头中提到的,您只需要具有cookie中匹配值的“X-CSRFToken”

再次尝试使用application/json仍然得到相同的错误:我还尝试关闭referer和Origin字段,仍然得到错误OK尝试清理cookies或在incognito或smth中使用postman。您也可以尝试关闭渲染器,只留下一个json。也尝试过(清除cookies),不走运:我尝试在外部客户端(如Paw)中执行此操作,以避免Chrome的Cookie出现任何错误。再次尝试使用application/json仍会出现相同的错误:我还尝试关闭referer和Origin字段,仍然有错误OK尝试清理cookies或使用匿名邮递员或smth。您也可以尝试关闭渲染器,只留下一个json。也尝试过(清除cookies),但没有成功:我在外部客户端(如Paw)中尝试过这样做,以避免Chrome的cookies出现任何错误。清除cookies没有帮助,使用Paw(REST OSX的另一个客户端)尝试了同样的事情同样的错误:这是/comments/post/url指向的,我是第一个使用这些框架的项目,但它看起来确实使用了csrf保护,不确定这与csfr豁免有什么不同。它使用csrf_protect decorator(),这意味着客户端需要有一个csrf令牌才能使用服务。如果使用csfr_employ decorator(),则不需要令牌来使用服务,请尝试添加decorator,它应该可以工作。CSRF的存在是有原因的,你可以在我没有注意到的django注释文件中阅读更多关于它的内容。是的,你不应该更改那个文件。每次POST请求都需要将CSRF令牌作为POST数据传入。在django文档中有一个关于如何执行的示例(),我不确定您在授权头中发送了什么,可能是用户登录的授权。对于CSRF,必须将自定义X-CSRFToken头设置为CSRF令牌的值。这在我之前链接的文档中有详细说明。清除Cookie没有帮助,使用Paw(REST OSX的另一个客户端)尝试了同样的事情得到了相同的错误:/comments/post/url指向的是这是我第一个使用这些框架的项目,但看起来它确实使用了csrf保护,不确定这与csfr豁免有什么不同。它使用csrf_protect decorator(),这意味着客户端需要有一个csrf令牌才能使用该服务。如果使用csfr_employ decorator(),则不需要令牌来使用服务,请尝试添加decorator,它应该可以工作。CSRF的存在是有原因的,你可以在我没有注意到的django注释文件中阅读更多关于它的内容。是的,你不应该更改那个文件。每次POST请求都需要将CSRF令牌作为POST数据传入。在django文档中有一个关于如何执行的示例(),我不确定您在授权头中发送了什么,可能是用户登录的授权。对于CSRF,必须将自定义X-CSRFToken头设置为CSRF令牌的值。这在我之前链接的文档中有详细说明。