Django 评论 CSRF 错误

Django comments CSRF error

收到 csrf 错误,我不知道如何解决,我有 rest auth 工作,用户可以像这样更新他们的详细信息:

但是 Django Comments 我使用相同的 csrf 令牌得到这个 csrf 错误:

我想消除 /comments/post/ 端点上的这个错误,这样这个端点的行为类似于接受 "Authorization: Token 792b5fb27b4fe805e895c91274f26b6ab13cb654" [=32= 的 /rest-auth/user/ 视图] 字段相关,向经过身份验证的用户提供数据。

以下是csrf相关的decotaros对截图中各个视图的作用: 来自 /comments/post/ 端点

@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

来自 /rest-auth/user/ 端点

@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 并重试。

我认为您正在使用默认情况下免除 csfr 令牌的 django-rest-framework,但邮递员正在发送 csfr 令牌,这就是您收到该错误的原因。

清理 cookie 可能会解决问题。

您端点的装饰器不同,因此您需要相应地调整 header。 对于您的 /rest-auth/ 查看 WWW-Authenticate header 是必需的,因为 mentioned here.

评论视图 /comments/ 端点具有 csrf_protect 装饰器,这意味着 header 必须与 cookie 中返回的 csrf-token 匹配,正如 Fede 在您的 header 您只需要 'X-CSRFToken' 与 cookie 中的匹配值。