我想在Azure API网关的allowed-origins部分动态添加域(Origins)。是否可以?或者是否有其他方法可以设置CORS,以便我们可以动态允许origins。
<cors>
<allowed-origins>
<origin>http://www.example.com</origin>
</allowed-origins>
<allowed-methods>
<method>GET</method>
<method>POST</method>
</allowed-methods>
</cors>
3条答案
按热度按时间lnvxswe21#
您不能动态地将元素添加到策略配置中,但可以动态地为其提供值(https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions):
bxgwgixi2#
我发现上面的解决方案不适用于预检OPTIONS请求,因为只有CORS策略被评估,导致它试图评估未分配的变量。
我通过创造(在此范例中为2)具名值,包含以逗号分隔的URL清单。“具名值”在原则评估时可用,因此可以运作。多个清单的理由是具名值的大小限制为4096个字符(我在这里的来源是Azure门户中输入过大值时的错误消息),这并不是很多URL。我选择使用CSV而不是JSON数组作为Named Values中的数据结构,因为处理JSON时会增加开销。我在本地运行了一些基准测试和CSV列表的连接,在较低的内存分配和GC的情况下,速度大约快了3倍。
以下是命名值中的示例列表:
8yoxcaq73#
我找到了一种提到贝娄的方式。
<origin></origin>