在Azure API Management中,我正在尝试修改API中单个路由的CORS策略。我遇到的问题是我无法弄清楚如何修改BASE策略。 Azure似乎只是用新策略覆盖它。
简单的基本政策:
<policies>
<inbound>
<cross-domain>
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="*" />
</cross-domain-policy>
</cross-domain>
<cors>
<allowed-origins>
<origin>*</origin>
</allowed-origins>
<allowed-methods>
<method>*</method>
</allowed-methods>
<allowed-headers>
<header>*</header>
</allowed-headers>
</cors>
</inbound>
<backend>
<forward-request />
</backend>
<outbound>
</outbound>
</policies>
在特定路线中,我想修改<cors>
部分以包含另一个政策,如下所示:
<policies>
<inbound>
<base />
<cors>
<expose-headers>
<header>Content-Disposition</header>
</expose-headers>
</cors>
</inbound>
</policies>
但是,Azure希望用这个覆盖基本CORS策略。我在文档中找不到关于如何修改/合并策略而不是批发替换它的任何内容。
那么,我将如何继承基本政策,但只需添加一个额外的<expose-headers>
政策?
答案 0 :(得分:1)
目前这是不可能的。它们的策略工作方式是一旦定义了请求范围(产品,API和操作匹配),就可以通过用上层策略替换所有标记来构建策略。产生的有效策略只是一个接一个执行的语句的平面列表。从这个意义上说,你无法控制较低级别的父级政策。
但是您可以在执行父策略之前始终插入内容。为此,只需在标记之前放置另一个完全指定的CORS策略,并在结果策略中首先执行它。
每个有效策略有多个CORS策略是可以的,它们将一个接一个地执行,并且第一个能够处理CORS调用(原点,方法,标题匹配)的策略将采取行动。