Куки Django sessionid исчезают при обновлении

Я использую Django DRF backend с SessionAuthentication и NextJS frontend. Они размещены на разных портах. Я пытаюсь использовать функцию django login для автоматического входа пользователя в систему при создании учетной записи. Когда я запускаю эту функцию, sessionid и csrf cookie сохраняются в cookies, но при обновлении они исчезают.

Перед обновлением:

куки в инструментах разработчика

После обновления:

куки пропали после обновления

Соответствующие настройки файла settings.py:

CORS_ALLOW_CREDENTIALS = True
CSRF_USE_SESSIONS = True
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_SAMESITE = 'None'


CORS_ALLOWED_ORIGINS = [
    "https://localhost:3000",
]

CSRF_TRUSTED_ORIGINS = {
    "https://localhost:3000"
}

Используемый вид:

class UserView(APIView):
    renderer_classes = [JSONRenderer]
    permission_classes = [
        permissions.AllowAny
    ]
    decorators = [sensitive_variables('password'), ensure_csrf_cookie]

    @method_decorator(decorators)
    def post(self, request, format=None):
        """Create User"""
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            username = serializer.validated_data['username']
            password = serializer.validated_data['password']
            user = authenticate(username=username, password=password)
            if user:
                login(request, user)
            return Response(data={'response': 'Successfully created account'}, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Request:

const response = await fetch(`https://127.0.0.1:8000/user/`, {
    method: 'POST',
    mode: 'cors',
    credentials: 'include',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify(data)
});

И сервер django, и NextJS работают с SSL-сертификатом dev, поэтому оба имеют https.

Вернуться на верх