2017-04-21 94 views
1

在Azure的API管理,我试图修改CORS策略API中的单一路线。我遇到的问题是我无法弄清楚如何修改BASE策略。 Azure似乎简单地用新策略覆盖它。如何修改Azure API基本策略而不完全覆盖它?

简单的基本政策:

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

然而,天青要覆盖基于这一个CORS策略。我无法在文档中找到有关如何修改/合并策略而不是批量替换它的任何内容。

所以,我将如何继承基本政策,但只需添加这一项额外的<expose-headers>政策?

回答

1

这是不可能的时刻。他们这样的政策工作,一旦请求范围定义(产品,API和运行相匹配)的政策是从上一级政策取代所有标签构成。由此产生的有效政策只是一个接一个地执行的扁平清单。从这个意义上说,你无法控制较低层次的家长政策。

但在执行父策略之前,你可以随时插入的东西。为此,只需在标记之前和结果策略中放置另一个完全指定的CORS策略,它将首先执行。

具有每有效的政策多CORS的政策是好的,他们会一个接一个执行和第一个是能够处理CORS调用(起源,方法,标题匹配)将采取行动。