Управление API Azure — политика cors. Невозможно динамически предоставлять из именованных значений

#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>
 

Что я пробовал до сих пор:

  1. Динамическое создание <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’ не может содержать текст. Ожидаемый список возможных элементов: ‘разрешенные источники, разрешенные заголовки, открытые заголовки, разрешенные методы’

  1. Динамическое создание только <origin> элементов.

Вопрос: Есть ли способ достичь намеченной цели?

Комментарии:

1. вы проверили это link-devblogs.microsoft.com/aspnet/manage-cors-policy-dynamically

2. Вы нашли решение? Я сталкиваюсь в основном с той же проблемой при попытке динамического создания <address> элементов внутри <ip-filter action="allow"> родительского элемента.

3. @Dan В итоге наши разработчики написали сценарий bash для создания самого файла шаблона APIM как части конвейера подготовки. Я не смог найти способ сделать это, используя встроенный синтаксис.