Проблемы с CORS при запуске докеризированного приложения FastAPI - PullRequest
0 голосов
/ 14 марта 2020

У меня приложение fastapi работает и работает нормально. Я хочу использовать мое приложение fastapi в качестве бэкэнда для моего реактивного интерфейса, развернутого на хостинге Firebase (https). Работая локально (http fastpi и реагировать), я включил CORS в FastAPI

from starlette.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

. Но после развертывания я понял, что не могу использовать fastapi в качестве HTTP, так как мой интерфейс работает по HTTPS. Я пошел дальше и создал кластер kubernetes в Google Cloud и вошел в мое докеризованное приложение fastapi (отображается как HTTPS). Это работает, когда я зацикливаюсь на своей конечной точке HTTPS fastapi, но у меня снова возникают проблемы с CORS в моем приложении реагирования, и на этот раз я не знаю, как ее решить. Почему вышесказанное больше не применяется?

Ошибка CORS:

Доступ к выборке в 'https://my-api-domain' от источника 'https://my-frontend-domain 'заблокировано политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

РЕДАКТИРОВАТЬ

Я только что провел дополнительное исследование, и я могу сделать вывод, что если я запускаю свой контейнер локально с docker run, то access-control-allow-origin правильно возвращается в заголовок. Но при развертывании в GKE нет access-control-allow-origin.

ОБНОВЛЕНИЯ

Я пытался установить nginx вход вместо GKE, но это усложняет ситуацию, касающуюся глобальной статистики c IP и гугл управляемый сертификат. Мне нужно решение, которое дает мне

  1. Global stati c IP (нормально с входом GKE)
  2. Управляемый сертификат Google (хорошо с входом GKE)
  3. CORS включен (нормально с nginx вход)

Так что я застрял в АТМ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...