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 中的匹配值。
收到 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 中的匹配值。