Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex API Gateway
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Сетевое взаимодействие
      • Обзор
      • Жадные параметры
      • Обобщенный HTTP-метод
      • Авторизация с помощью функции Cloud Functions
      • Авторизация с помощью JWT
      • Поддержка протокола WebSocket
      • Валидация данных
      • CORS
      • Параметризация спецификации
      • Канареечный релиз
      • Ограничение скорости обработки запросов
      • Замена кода ответа
      • Преобразование тела ответа и запроса
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • CorsRuleObject
  • Параметры
  • Расширение x-yc-apigateway-cors-rules
  • Расширение x-yc-apigateway-cors
  • Примеры спецификаций
  • Пример спецификации с правилом, разрешающим любые HTTP-запросы с любыми заголовками и с любых доменов
  • Пример спецификации с переопределением правила CORS
  • Пример спецификации с правилом CORS, копирующим заголовок Origin в ответ
  • Пример спецификации с определением правила CORS в секции components
  1. Концепции
  2. Расширения спецификации
  3. CORS

CORS

Статья создана
Yandex Cloud
Обновлена 25 февраля 2025 г.
  • CorsRuleObject
    • Параметры
  • Расширение x-yc-apigateway-cors-rules
  • Расширение x-yc-apigateway-cors
  • Примеры спецификаций
    • Пример спецификации с правилом, разрешающим любые HTTP-запросы с любыми заголовками и с любых доменов
    • Пример спецификации с переопределением правила CORS
    • Пример спецификации с правилом CORS, копирующим заголовок Origin в ответ
    • Пример спецификации с определением правила CORS в секции components

Расширения x-yc-apigateway-cors-rules и x-yc-apigateway-cors позволяют настроить автоматическую обработку preflight-запросов в соответствии с механизмом CORS.

CorsRuleObjectCorsRuleObject

CorsRuleObject или правило CORS — набор параметров спецификации OpenAPI, который позволяет определить правило обработки preflight-запросов в соответствии с CORS.

ПараметрыПараметры

В таблице ниже перечислены параметры объекта CorsRuleObject.

Параметр Тип Обязательный Описание
origin boolean, string, string[] Да Определяет содержимое заголовка Access-Control-Allow-Origin. Если значение равно false, обработка CORS не выполняется и заголовок не передается в ответе. Если значение равно true, в заголовке передается содержимое заголовка запроса Origin. Если значение задано строкой или массивом строк, оно подставляется без изменений в заголовок ответа Access-Control-Allow-Origin.
methods string, string[] Нет Определяет содержимое заголовка Access-Control-Allow-Methods. Может задаваться строкой с перечислением разрешенных HTTP-методов через запятую или массивом строк по одному HTTP-методу в каждой. Если не задан, в заголовке передается содержимое заголовка запроса Access-Control-Request-Headers.
allowedHeaders string, string[] Нет Определяет содержимое заголовка Access-Control-Allow-Headers. Может задаваться строкой с перечислением разрешенных заголовков через запятую или массивом строк по заголовку в каждой. Если не задан, заголовок не передается в ответе.
exposedHeaders string, string[] Нет Определяет содержимое заголовка Access-Control-Expose-Headers. Может задаваться строкой с перечислением разрешенных заголовков через запятую или массивом строк по заголовку в каждой. Если не задан, заголовок не передается в ответе.
credentials boolean Нет Определяет содержимое заголовка Access-Control-Allow-Credentials. Если не задан, заголовок не передается в ответе.
maxAge integer Нет Определяет содержимое заголовка Access-Control-Max-Age. Если не задан, заголовок не передается в ответе.
optionsSuccessStatus integer Нет Определяет код успешного ответа для preflight-запроса. Значение по-умолчанию — 200.

Расширение x-yc-apigateway-cors-rulesРасширение x-yc-apigateway-cors-rules

Расширение x-yc-apigateway-cors-rules позволяет описывать различные правила обработки preflight-запросов в секции components. На определенные таким образом правила можно ссылаться с помощью параметра $ref в расширении x-yc-apigateway-cors и подключать их к разным путям или ко всему API-шлюзу (см. параметр cors расширения x-yc-apigateway).

Расширение x-yc-apigateway-corsРасширение x-yc-apigateway-cors

Расширение x-yc-apigateway-cors позволяет подключать правило обработки preflight-запросов к конкретному пути и имеет тип CorsRuleObject.

Примеры спецификацийПримеры спецификаций

Пример спецификации с правилом, разрешающим любые HTTP-запросы с любыми заголовками и с любых доменовПример спецификации с правилом, разрешающим любые HTTP-запросы с любыми заголовками и с любых доменов

В данном примере обработка preflight-запросов CORS настроена для всего API-шлюза. Правило определяется на верхнем уровне через параметр cors расширения x-yc-apigateway.

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Petstore API

x-yc-apigateway:
  cors:
    origin: '*'
    methods: '*'
    allowedHeaders: '*'

paths:
  /pets/{petId}:
    get:
      operationId: petById
      parameters:
        - in: path
          name: petId
          schema:
            type: integer
          required: true
          description: Pet identifier
      responses:
        '200':
          description: Pet
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: b095c95icn**********

components:
  schemas:
    Pet:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
        name:
          type: string

Пример спецификации с переопределением правила CORSПример спецификации с переопределением правила CORS

В данном примере общее правило, определенное на верхнем уровне для всего API-шлюза, переопределяется на уровне конкретного пути. Значение false параметра origin отключает обработку preflight-запросов в API-шлюзе, и запрос передается в функцию-интеграцию. Все СОRS-заголовки, которые приходят в ответе от функции, прокидываются без изменения в ответ от API-шлюза.

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Petstore API

x-yc-apigateway:
  cors:
    origin: '*'
    methods: '*'
    allowedHeaders: '*'

paths:
  /pets/{petId}:
    x-yc-apigateway-cors:
      origin: false
    options:
      operationId: prefligh********
      parameters:
        - in: path
          name: petId
          schema:
            type: integer
          required: true
          description: Pet identifier
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: b095c95icn**********

Пример спецификации с правилом CORS, копирующим заголовок в ответПример спецификации с правилом CORS, копирующим заголовок Origin в ответ

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Petstore API

paths:
  /pets/{petId}:
    x-yc-apigateway-cors:
      origin: true
      methods: [GET,POST,DELETE]
      allowedHeaders: x-custom-header
      exposedHeaders: x-custom-header
      maxAge: 3600
    get:
      operationId: petById
      parameters:
        - in: path
          name: petId
          schema:
            type: integer
          required: true
          description: Pet identifier
      responses:
        '200':
          description: Pet
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: b095c95icn**********

components:
  schemas:
    Pet:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
        name:
          type: string

Пример спецификации с определением правила CORS в секции componentsПример спецификации с определением правила CORS в секции components

openapi: "3.0.0"
info:
  version: 1.0.0
  title: Petstore API

paths:
  /pets/{petId}:
    x-yc-apigateway-cors:
      $ref: "#/components/x-yc-apigateway-cors-rules/cors-rule"
    get:
      operationId: petById
      parameters:
        - in: path
          name: petId
          schema:
            type: integer
          required: true
          description: Pet identifier
      responses:
        '200':
          description: Pet
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Pet"
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: b095c95icn**********

components:
  x-yc-apigateway-cors-rules:
    cors-rule:
      origin:
        - https://foo.bar.org
        - https://foo1.bar2.org
      methods:
        - GET
        - POST
      allowedHeaders:
        - x-header-1
        - x-header-2
      exposedHeaders:
        - x-header-1
        - x-header-2
      credentials: true
      maxAge: 3600
      optionsSuccessStatus: 204

  schemas:
    Pet:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
        name:
          type: string

Была ли статья полезна?

Предыдущая
Валидация данных
Следующая
Параметризация спецификации
Проект Яндекса
© 2025 ООО «Яндекс.Облако»