Настройка общего доступа к ресурсам между источниками (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
Перейдите в приложение-контейнер в портал Azure.
В меню параметров выберите CORS.
С включенным CORS можно добавлять, изменять и удалять значения для разрешенных источников, разрешенных методов, разрешенных заголовков и предоставления заголовков.
Чтобы разрешить любые допустимые значения для методов, заголовков или источников, введите *
в качестве значения.
Примечание.
Обновления параметров конфигурации с помощью командной строки перезаписывают текущие параметры. Обязательно включите текущие параметры в любые новые значения CORS, которые вы хотите задать, чтобы обеспечить согласованность конфигурации.
Следующий код представляет форму, которую параметры CORS принимают в шаблон ARM при настройке приложения контейнера.
{
...
"properties": {
...
"configuration": {
...
"ingress": {
...
"corsPolicy": {
"allowCredentials": true,
"maxAge": 5000,
"allowedOrigins": ["https://example.com"],
"allowedMethods": ["GET","POST"],
"allowedHeaders": [],
"exposeHeaders": []
}
}
}
}
}