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

Параметр expose_headers

Параметр expose_headers передаётся в middleware CORSMiddleware и задаёт список заголовков ответа, которые браузер разрешает читать JavaScript-коду на стороне клиента при кросс-доменных запросах. По умолчанию браузер открывает клиенту лишь несколько «безопасных» заголовков, поэтому все остальные нужно явно перечислить в этом параметре. Значением может быть список строк или строка '*', разрешающая чтение всех заголовков.

Синтаксис

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, expose_headers=[...] )

Пример

Давайте разрешим клиенту читать заголовок X-Total-Count из ответа:

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['http://localhost:3000'], expose_headers=['X-Total-Count'] ) @app.get('/items') def items(): res = JSONResponse({'items': [1, 2, 3]}) res.headers['X-Total-Count'] = '3' return res

В ответе появится заголовок Access-Control-Expose-Headers: X-Total-Count, и JavaScript на клиенте сможет прочитать значение X-Total-Count.

Пример

Давайте разрешим чтение нескольких заголовков сразу:

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['http://localhost:3000'], expose_headers=['X-Total-Count', 'X-Page', 'X-Per-Page'] ) @app.get('/items') def items(): res = JSONResponse({'items': [1, 2, 3]}) res.headers['X-Total-Count'] = '3' res.headers['X-Page'] = '1' res.headers['X-Per-Page'] = '10' return res

В ответе появится заголовок Access-Control-Expose-Headers: X-Total-Count, X-Page, X-Per-Page.

Пример

Давайте разрешим чтение всех заголовков с помощью строки '*':

from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=['http://localhost:3000'], expose_headers=['*'] ) @app.get('/') def index(): return {'text': 'hello'}

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

{"text": "hello"}

В ответе появится заголовок Access-Control-Expose-Headers: *. Обратите внимание, что значение '*' поддерживается не всеми браузерами, поэтому на практике надёжнее перечислять нужные заголовки явно.

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

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