Конечная точка Django Rest Framework не имеет заголовка ответа 'Access-Control-Allow-Origin'

У меня есть приложение flutter, которое делает вызов к двум различным конечным точкам, одна из них отвечает как ожидалось, но другая блокируется CORS, потому что "На запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'"

Согласно документации django rest framework я могу передавать заголовки как словарь HTTP заголовков для использования в ответе следующим образом:

@api_view(['GET'])
@permission_classes((AllowAny,))
def get_new_blog_posts(request):
    blog_posts = BlogPost.objects.all().order_by('-id')[:5]
    serializer = BlogPostPreviewSerializer(blog_posts, many=True)
    return Response(serializer.data, headers={'Access-Control-Allow-Origin':'http://localhost:51626'})

Что должно позволить front end сделать вызов и получить информацию, но почему-то ответ игнорирует заголовки.

Представление, которое работает, выглядит следующим образом:

class ApiJobPostsContentView(generics.ListAPIView):
queryset = JobPost.objects.all()
serializer_class = JobPostCardSerializer
authentication_classes = []
permission_classes = [permissions.BasePermission]
filter_backends = [SearchFilter, OrderingFilter, DjangoFilterBackend]

Я пробовал сделать неудачное представление общим ListAPIView, но это не имеет значения, заголовок все равно отсутствует.

django-cors-headers установлен в приложении, и в моем файле settings.py есть все необходимое, чтобы другие представления работали так, как они должны работать.

Мой set.py:

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

    CORS_ORIGIN_WHITELIST = (
    'http://localhost:51626',
)

CORS_ALLOW_METHODS = [
    "DELETE",
    "GET",
    "OPTIONS",
    "PATCH",
    "POST",
    "PUT",
]
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_HEADERS = [
    'accept',
    'accept-encoding',
    'Authorization',
    'authorization',
    'token',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Access-Control-Allow-Origin',
]
CSRF_TRUSTED_ORIGINS = [
    "http://localhost:51626",
]

¿Почему только одно представление не отвечает заголовком 'Access-Control-Allow-Origin'?

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