问题描述
我们有多个 API,它们具有多种读取和写入数据的方法。所有 API 都通过 APIM,我想为这些 API 创建和分配产品,但限制使用动词(GET、POST、DELETE 等)读取或写入。
我想创建一个名为“api-(name)-read”的产品并设置一个仅允许 GET 动词的策略。将有另一个产品“api-(name)-write”允许所有动词。我在 CORS 部分看到,我可以设置允许的方法,但不想在产品级别维护 CORS 设置。知道如何将产品限制为“只读”操作吗?
解决方法
CORS 不用作基于动词允许或拒绝请求的一般方法,它仅用于实际的 CORS 功能:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS。此外,产品范围的 CORS 也有其自身的局限性。
要执行您想要的操作,请在产品范围内添加如下政策:
<choose>
<when condition="@(context.Request.Method != "GET")">
<return-response>
<set-status code="401" reason="Unauthorized"/>
<return-response>
</when>
</choose>