Параметр allow_origins
Параметр allow_origins передаётся в класс
CORSMiddleware и определяет список доверенных
источников (origin) для CORS-запросов. Источник - это
комбинация схемы, домена и порта, например
'http://localhost:3000'. Если браузер отправляет
запрос с источника, которого нет в этом списке,
ответ не получит заголовок
Access-Control-Allow-Origin, и браузер заблокирует
ответ для клиентского скрипта. По умолчанию список пуст,
то есть cross-origin запросы запрещены. Значение
['*'] разрешает любые источники, но несовместимо
с allow_credentials=True.
Синтаксис
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=['http://localhost:3000'],
)
Пример
Давайте разрешим запросы только с одного источника:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['http://localhost:3000'],
)
@app.get('/')
def index():
return {'text': 'hello'}
Теперь запрос с источника 'http://localhost:3000'
получит заголовок Access-Control-Allow-Origin
со значением 'http://localhost:3000', а запрос
с любого другого источника будет заблокирован браузером.
Пример
Давайте разрешим запросы сразу с нескольких источников:
Запросы с источников 'http://localhost:3000' и
'http://localhost:8080' будут пропущены, остальные
браузер заблокирует.
Пример
Давайте разрешим любые источники через звёздочку:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['*'],
)
@app.get('/')
def index():
return {'text': 'hello'}
В этом случае сервер вернёт заголовок
Access-Control-Allow-Origin со значением
'*', и любой источник сможет читать ответ.
Однако при allow_credentials=True такой вариант
использовать нельзя.
Смотрите также
-
класс
CORSMiddleware,
который настраивает CORS-поведение приложения -
параметр
allow_origin_regex,
который задаёт источники регулярным выражением -
параметр
allow_methods,
который задаёт разрешённые HTTP-методы -
параметр
allow_credentials,
который разрешает передачу учётных данных