首页 > 解决方案 > Azure APIM 的 CORS 仅在操作而不是产品级别设置时有效

问题描述

我们对 CORS 政策有疑问,不确定是错误还是?

我们尝试对 API 中使用的产品设置 CORS 策略,但没有任何效果。然后我们在 API 级别为“所有操作”应用了相同的 CORS 策略。这次它按预期工作。

正如我们理解的产品级别的 CORS 政策也应该是可行的,我们可能是错的,或者是否有一些细节我们应该知道在产品级别上进行这项工作?

标签: azure-api-management

解决方案


如果您的产品需要订阅 CORS 策略才能工作,则必须在查询字符串中传递密钥。这里的问题是,如果您尝试在标头浏览器中传递订阅密钥,仍然会发送 OPTIONS 请求而没有任何额外的标头。APIM 将无法识别产品并应用订阅密钥。因此 CORS 策略将不起作用。

另一方面,如果在查询字符串中传递密钥,则此信息将在 OPTIONS 请求中提供,并且 APIM 按需要工作。

这本身不是 APIM 问题,因为 CORS 规范本身不允许在 OPTIONS 请求中使用任何额外的标头。它仅适用于需要预检 OPTIONS 请求的请求。CORS GET 请求应该可以直接发送。


推荐阅读