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

Класс CORSMiddleware

Класс CORSMiddleware применяется к приложению FastAPI через метод add_middleware. Он управляет заголовками ответа, которые определяют, каким сторонним доменам разрешено обращаться к API, какие HTTP-методы и заголовки можно использовать, а также можно ли отправлять куки и учётные данные. Основные параметры: allow_origins, allow_methods, allow_headers, allow_credentials, allow_origin_regex, expose_headers и max_age.

Синтаксис

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['abcde'], allow_methods=['GET'], allow_headers=['*'], allow_credentials=True, expose_headers=['X-Custom'], max_age=600, )

Пример

Давайте разрешим запросы с одного конкретного домена:

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['http://abcde.com'], allow_methods=['GET', 'POST'], allow_headers=['*'], ) @app.get('/') def index(): return {'text': 'hello'}

Теперь браузер сможет обратиться к адресу / со страницы, размещённой на http://abcde.com, и получит ответ:

{"text": "hello"}

Пример

Давайте разрешим запросы с любого домена и включим поддержку учётных данных:

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['*'], allow_methods=['*'], allow_headers=['*'], allow_credentials=True, ) @app.post('/user') def user(): return {'name': 'abcde'}

Результат выполнения кода для POST-запроса на адрес /user:

{"name": "abcde"}

Пример

Давайте разрешим домены по регулярному выражению:

<+python+> from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origin_regex='https://.*\\.abcde\\.com', allow_methods=['GET'], allow_headers=['*'], max_age=600, ) @app.get('/article') def article(): return {'title': 'article'} <-python+>

Теперь запросы с https://user.abcde.com и https://api.abcde.com будут разрешены. Результат выполнения кода:

{"title": "article"}

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

  • параметр allow_origins,
    который задаёт список разрешённых источников
  • параметр allow_methods,
    который задаёт список разрешённых HTTP-методов
  • параметр allow_headers,
    который задаёт список разрешённых заголовков запроса
  • параметр allow_credentials,
    который разрешает отправку куки и учётных данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить