如何基于Azure APIM Product按HTTP动词限制API读写访问权限
Azure APIM Product只读限制方案(无需修改Product层级CORS配置)
你可以直接在目标Product的入站策略中添加HTTP动词过滤规则,该逻辑完全独立于CORS配置,不会和全局/API层级已有的CORS规则冲突,也不需要在Product层维护任何CORS相关参数。
具体配置步骤如下:
- 进入你要配置为只读的
api-(name)-read类Product的策略配置页面 - 在入站配置段添加动词判断逻辑,非允许的只读动词直接返回405状态码即可
- 无需调整现有CORS配置,
<base/>标签会自动继承上级的所有CORS规则
示例策略配置如下:
<policies> <inbound> <base /> <choose> <!-- 仅允许GET、HEAD以及CORS预检用的OPTIONS方法,可根据实际需求删减 --> <when condition="@(context.Request.Method != "GET" && context.Request.Method != "HEAD" && context.Request.Method != "OPTIONS")"> <return-response> <set-status code="405" reason="Method Not Allowed" /> <set-header name="Allow" exists-action="override"> <value>GET, HEAD</value> </set-header> </return-response> </when> </choose> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
配置说明:
- 若不需要支持HEAD请求,可直接删除条件中对应
&& context.Request.Method != "HEAD"的判断 - 排除OPTIONS方法是为了避免拦截CORS预检请求,确保上层CORS配置正常生效,如果你没有跨域需求也可以删掉该判断
- 读写类的
api-(name)-writeProduct不需要添加任何额外策略,默认继承上级规则即可支持所有HTTP动词
内容的提问来源于stack exchange,提问作者madmunki
相关产品推荐
相关产品推荐

