1

我有一个 Django Rest-framework APIView 类,如下所示:

class HelloView(APIView):

    def get(self, request):
        clients = client.objects.all()
        serializer = ClientSerializerAPIView(clients, many=True) 
        return Response(serializer.data)
    def post(self, request):
        serializer = ClientSerializerAPIView(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_404_NOT_FOUND)

当我通过邮递员发送 get 请求时,邮递员的 cookie 部分中有一个 csrf 令牌,但问题是在收到的头文件中没有 Set-Cookie 字段供我从中获取 gram csrftoken。

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

2

那是在 cookie 中而不是在标题中,您应该X-CSRFToken在标题中发送密钥。

您必须使用以下内容装饰您的视图ensure_csrf_cookie

from django.views.decorators.csrf import ensure_csrf_cookie
from django.utils.decorators import method_decorator


@method_decorator(ensure_csrf_cookie, name='dispatch')
class MyView(APIView):
    ...

您还可以发送有效的 csrf 令牌作为响应django.middleware.csrf.get_token(request) 并相应地设置它。

于 2019-02-27T09:41:21.123 回答