2017-04-21 93 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調用(起源,方法,標題匹配)將採取行動。