#azure #azure-api-management #apim
Вопрос:
Цель:
Динамически передавать источники cors в политику cors из именованных значений.
Пример:
Предположим, у меня есть следующие именованные значения:
name: cors-origins
value: https://domain1.com;https://domain2.com
и политика CORS, которая намеревается использовать это именованное значение cors-origins
:
<policies>
<inbound>
<cors>
<allowed-origins>
// Here I need to use {{ cors-origins }}
// The expected output is:
// <origin>https://domain1.com</origin>
// <origin>https://domain2.com</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
</allowed-methods>
</cors>
</inbound>
<backend>
<forward-request />
</backend>
<outbound />
<on-error />
</policies>
Что я пробовал до сих пор:
- Динамическое создание
<allowed-origins>
раздела:
Фрагмент:
...
<cors>
@{
var origins = "{{cors-origins}}".Split(';');
return new XElement("allowed-origins", origins.Select(domain => new XElement("origin",domain)));
// outputs:
// <allowed-origins>
// <origin>https://domain1.com</origin>
// <origin>https://domain2.com</origin>
// </allowed-origins>
}
...
</cors>
Ошибки с: элемент ‘cors’ не может содержать текст. Ожидаемый список возможных элементов: ‘разрешенные источники, разрешенные заголовки, открытые заголовки, разрешенные методы’
- Динамическое создание только
<origin>
элементов.
Вопрос: Есть ли способ достичь намеченной цели?
Комментарии:
1. вы проверили это link-devblogs.microsoft.com/aspnet/manage-cors-policy-dynamically
3. @Dan В итоге наши разработчики написали сценарий bash для создания самого файла шаблона APIM как части конвейера подготовки. Я не смог найти способ сделать это, используя встроенный синтаксис.