Параметр max_age
Параметр max_age передаётся в конструктор класса
CORSMiddleware
и управляет заголовком Access-Control-Max-Age в ответе на
preflight-запрос. Значение указывается в секундах и сообщает браузеру,
как долго можно не повторять проверочный OPTIONS-запрос к серверу.
По умолчанию параметр равен 600 секундам.
Если браузер уже получил preflight-ответ и закешировал его, повторные CORS-запросы к тому же ресурсу в течение указанного времени не будут сопровождаться дополнительным OPTIONS-запросом. Это снижает нагрузку на сервер и ускоряет работу клиента.
Синтаксис
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
max_age=600,
)
Пример
Давайте подключим CORSMiddleware с параметром max_age,
равным 3600 секундам:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['http://localhost:3000'],
allow_methods=['GET', 'POST'],
allow_headers=['*'],
max_age=3600,
)
@app.get('/')
def index():
return {'text': 'hello'}
Теперь при preflight-запросе сервер вернёт заголовок
Access-Control-Max-Age: 3600, и браузер закеширует
разрешение на час.
Пример
Давайте зададим минимальное значение max_age, равное 0,
чтобы браузер выполнял preflight-запрос при каждом обращении:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['http://localhost:3000'],
allow_methods=['*'],
allow_headers=['*'],
max_age=0,
)
@app.get('/user')
def user():
return {'name': 'abcde'}
Результат выполнения preflight-запроса:
{"Access-Control-Max-Age": "0"}
Смотрите также
-
класс
CORSMiddleware,
который настраивает CORS-политику приложения -
параметр
allow_origins,
который задаёт список разрешённых источников -
параметр
allow_methods,
который задаёт список разрешённых HTTP-методов -
параметр
allow_headers,
который задаёт список разрешённых заголовков