Настройка общего доступа к ресурсам между источниками (CORS) для приложений контейнеров Azure

По умолчанию запросы, сделанные через браузер, к домену, который не соответствует домену источника страницы, блокируются. Чтобы избежать этого ограничения для служб, развернутых в контейнерных приложениях, можно включить CORS.

В этой статье показано, как включить и настроить CORS в приложении контейнера.

При включении CORS можно настроить следующие параметры:

Параметр Описание
Разрешить учетные данные Указывает, следует ли возвращать Access-Control-Allow-Credentials заголовок.
Максимальный возраст Настраивает Access-Control-Max-Age заголовок ответа, чтобы указать, сколько времени (в секундах) можно кэшировать результаты предварительного запроса CORS.
Допустимые источники Список источников, разрешенных для запросов между источниками (например, https://www.contoso.com). Управляет заголовком Access-Control-Allow-Origin ответа. Используется * для разрешения всех.
Допустимые методы Список методов HTTP-запроса, разрешенных в запросах между источниками. Управляет заголовком Access-Control-Allow-Methods ответа. Используется * для разрешения всех.
Допустимые заголовки Список заголовков, разрешенных в запросах между источниками. Управляет заголовком Access-Control-Allow-Headers ответа. Используется * для разрешения всех.
Предоставление заголовков По умолчанию не все заголовки ответов предоставляются клиентскому коду JavaScript в запросе между источниками. Открытые заголовки являются дополнительными серверами заголовков, которые могут включаться в ответ. Управляет заголовком Access-Control-Expose-Headers ответа. Используйте * для предоставления всех.
Свойство Пояснение Тип
allowCredentials Указывает, следует ли возвращать Access-Control-Allow-Credentials заголовок. boolean
maxAge Настраивает Access-Control-Max-Age заголовок ответа, чтобы указать, сколько времени (в секундах) можно кэшировать результаты предварительного запроса CORS. integer
allowedOrigins Список источников, разрешенных для запросов между источниками (например, https://www.contoso.com). Управляет заголовком Access-Control-Allow-Origin ответа. Используется * для разрешения всех. массив строк
allowedMethods Список методов HTTP-запроса, разрешенных в запросах между источниками. Управляет заголовком Access-Control-Allow-Methods ответа. Используется * для разрешения всех. массив строк
allowedHeaders Список заголовков, разрешенных в запросах между источниками. Управляет заголовком Access-Control-Allow-Headers ответа. Используется * для разрешения всех. массив строк
exposeHeaders По умолчанию не все заголовки ответов предоставляются клиентскому коду JavaScript в запросе между источниками. Открытые заголовки являются дополнительными серверами заголовков, которые могут включаться в ответ. Управляет заголовком Access-Control-Expose-Headers ответа. Используйте * для предоставления всех. массив строк

Дополнительные сведения см. в справочнике по рабочей группе веб-гипертекстовых приложений (WHATWG) по допустимым http-ответам из запроса на получение.

Включение и настройка CORS

  1. Перейдите в приложение-контейнер в портал Azure.

  2. В меню параметров выберите CORS.

    Screenshot showing how to enable CORS in the Azure portal.

С включенным CORS можно добавлять, изменять и удалять значения для разрешенных источников, разрешенных методов, разрешенных заголовков и предоставления заголовков.

Чтобы разрешить любые допустимые значения для методов, заголовков или источников, введите * в качестве значения.

Примечание.

Обновления в параметры конфигурации с помощью командной строки перезаписывает текущие параметры. Обязательно включите текущие параметры в любые новые значения CORS, которые вы хотите задать, чтобы обеспечить согласованность конфигурации.

Следующий код представляет форму, которую параметры CORS принимают в шаблон ARM при настройке приложения контейнера.

{ 
  ... 
  "properties": { 
      ... 
      "configuration": { 
         ... 
          "ingress": { 
              ... 
              "corsPolicy": { 
                "allowCredentials": true,
                "maxAge": 5000,
                "allowedOrigins": ["https://example.com"], 
                "allowedMethods": ["GET","POST"], 
                "allowedHeaders": [], 
                "exposeHeaders": []
              } 
          } 
      } 
  } 
}

Следующие шаги