Конечная точка 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'?