我想在Azure API网关中在允许来源部分中动态添加域(来源)。可能吗 ?或者还有另一种方法可以设置CORS,以便我们可以动态地允许起源。
<cors>
<allowed-origins>
<origin>http://www.example.com</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
</allowed-methods>
</cors>
答案 0 :(得分:0)
您不能为策略配置动态添加元素,但是可以为它们动态提供值(https://docs.microsoft.com/en-us/azure/api-management/api-management-policy-expressions):
<cors>
<allowed-origins>
<origin>@(context.Request.Url.ToUri().GetLeftPart(UriPartial.Authority))</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
</allowed-methods>
</cors>
答案 1 :(得分:0)
我发现一种提及波纹管的方法。
<inbound>
<base />
<send-request mode="new" response-variable-name="variable" timeout="600" ignore-error="true">
<set-url>@("http://MyDomain/ApiMethod?Origin="(string)context.Request.Headers["Origin"].Last())</set-url>
<set-method>GET</set-method>
<set-body />
</send-request>
<cors>
<allowed-origins>
<origin>@((string)((IResponse)context.Variables["variable"]).Body.As<JObject>(true)["Origin"])</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
</allowed-methods>
</cors>
</inbound
<origin></origin>