У меня приложение 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 и гугл управляемый сертификат. Мне нужно решение, которое дает мне
- Global stati c IP (нормально с входом GKE)
- Управляемый сертификат Google (хорошо с входом GKE)
- CORS включен (нормально с nginx вход)
Так что я застрял в АТМ!