Класс HTTPSRedirectMiddleware
Класс HTTPSRedirectMiddleware применяется к приложению
FastAPI и заставляет его перенаправлять все входящие
HTTP-запросы на HTTPS. Middleware проверяет схему запроса
и, если она равна http, возвращает ответ с кодом
перенаправления на тот же URL, но со схемой https.
Это особенно полезно при развёртывании приложения за
обратным прокси, который не выполняет такое перенаправление
самостоятельно.
Класс не принимает обязательных параметров: при создании
экземпляра достаточно передать ему приложение FastAPI.
Middleware также учитывает заголовок X-Forwarded-Proto,
если приложение работает за прокси-сервером.
Синтаксис
from fastapi import FastAPI
from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware
app = FastAPI()
app.add_middleware(HTTPSRedirectMiddleware)
Пример
Давайте подключим middleware к приложению и создадим простой маршрут, чтобы проверить перенаправление:
from fastapi import FastAPI
from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware
app = FastAPI()
app.add_middleware(HTTPSRedirectMiddleware)
@app.get('/')
def index():
return {'text': 'hello'}
Теперь при обращении по адресу http://localhost:8000/
сервер вернёт ответ с кодом 307 и заголовком Location,
указывающим на https://localhost:8000/.
Результат выполнения запроса (заголовки ответа):
{"location": "https://localhost:8000/", "status_code": 307}
Пример
Давайте проверим, что при обращении по HTTPS перенаправления не происходит и возвращается обычный ответ:
from fastapi import FastAPI
from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware
app = FastAPI()
app.add_middleware(HTTPSRedirectMiddleware)
@app.get('/user')
def user():
return {'name': 'abcde'}
При запросе по адресу https://localhost:8000/user
клиент получит исходный ответ без перенаправления:
{"name": "abcde"}
Смотрите также
-
класс
CORSMiddleware,
который настраивает кросс-доменные запросы -
класс
GZipMiddleware,
который сжимает ответы с помощью gzip -
класс
TrustedHostMiddleware,
который ограничивает список доверенных хостов -
параметр
allow_origins,
который задаёт список разрешённых источников для CORS