РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
272 of 307 menu

Класс TrustedHostMiddleware

Класс TrustedHostMiddleware применяется к приложению FastAPI и проверяет заголовок Host входящего запроса. Если домен не входит в список разрешённых, приложение возвращает ответ 400 Bad Request. Это защищает от атак типа Host Header Injection. При создании middleware первым параметром передаётся приложение app, а вторым - список разрешённых хостов allowed_hosts. Дополнительно можно указать параметр www_redirect, который перенаправляет запросы с www-поддомена на основной домен.

Синтаксис

from fastapi import FastAPI from fastapi.middleware.trustedhost import TrustedHostMiddleware app = FastAPI() app.add_middleware(TrustedHostMiddleware, allowed_hosts=allowed_hosts)

Пример

Давайте разрешим только домен 'example.com' и все его поддомены:

from fastapi import FastAPI from fastapi.middleware.trustedhost import TrustedHostMiddleware app = FastAPI() app.add_middleware( TrustedHostMiddleware, allowed_hosts=['example.com', '*.example.com'], ) @app.get('/') def index(): return {'text': 'hello'}

Результат выполнения кода для адреса http://example.com/:

{"text": "hello"}

Результат выполнения кода для адреса http://evil.com/:

{"detail": "Invalid host header"}

Пример

Давайте включим перенаправление с www-поддомена на основной домен через параметр www_redirect:

<+python+> from fastapi import FastAPI from fastapi.middleware.trustedhost import TrustedHostMiddleware app = FastAPI() app.add_middleware( TrustedHostMiddleware, allowed_hosts=['example.com'], www_redirect=True, ) @app.get('/') def index(): return {'text': 'hello'} <-python+>

Результат выполнения кода для адреса http://www.example.com/:

HTTP/1.1 307 Temporary Redirect location: http://example.com/

Пример

Давайте разрешим любой хост через маску '*'. Такой вариант полезен в разработке, но небезопасен в продакшене:

from fastapi import FastAPI from fastapi.middleware.trustedhost import TrustedHostMiddleware app = FastAPI() app.add_middleware( TrustedHostMiddleware, allowed_hosts=['*'], ) @app.get('/') def index(): return {'text': 'hello'}

Результат выполнения кода для любого адреса:

{"text": "hello"}

Смотрите также

  • класс CORSMiddleware,
    который настраивает кросс-доменные запросы
  • класс GZipMiddleware,
    который сжимает ответы через gzip
  • класс HTTPSRedirectMiddleware,
    который перенаправляет HTTP-запросы на HTTPS
  • параметр allow_origins,
    который задаёт разрешённые источники для CORS
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить