在 API 管理开发人员门户中为交互式控制台启用 CORS

跨源资源共享 (CORS) 是一种基于 HTTP 标头的机制,它允许服务器指示除其自己的原点以外的任何原点(域、方案或端口),并且浏览器应允许从这些原点加载资源。

要让 API 管理开发人员门户的访问者使用 API 参考页面中的交互式测试控制台,请在 API 管理实例中为 API 启用 CORS 策略。 如果开发人员门户的域名不是跨域 API 请求允许的源,测试控制台用户会看到 CORS 错误。

在某些情况下,可以将开发人员门户配置为 CORS 代理,而不是为 API 启用 CORS 策略。

可用性

重要

此功能在 API 管理的“高级”、“标准”、“基本”和“开发人员”层中可用 。

先决条件

转到你的 API 管理实例

  1. 在 Azure 门户中搜索并选择“API 管理服务” 。

    选择“API 管理服务”

  2. 在“API 管理”服务页上,选择你的 API 管理实例。

    选择你的 API 管理实例

为 API 启用 CORS 策略

可以启用设置,为 API 管理实例中的所有 API 自动配置 CORS 策略。 还可以手动配置 CORS 策略。

注意

仅执行一个 CORS 策略。 如果你指定了多个 CORS 策略(例如在 API 级别和所有 API 级别),则交互式控制台可能不会按预期方式工作。

自动启用 CORS 策略

  1. 在 API 管理实例的左侧菜单中的“开发人员门户”下,选择“门户概述”。
  2. 在“启用 CORS”下,将显示 CORS 策略配置的状态。 警告框指示缺少策略或策略配置不正确。
  3. 若要从开发人员门户为所有 API 启用 CORS,请选择“启用 CORS”

显示在开发人员门户中查看 CORS 策略状态的位置的屏幕截图。

手动启用 CORS 策略

  1. 选择“在全局级别上手动应用”链接以查看生成的策略代码。
  2. 导航到 API 管理实例的“API”部分中的“所有 API”
  3. 在“入站处理”部分中,选择 </> 图标。
  4. 在策略编辑器中,将策略插入到 XML 文件的 <inbound> 部分中。 请确保 <origin> 值与开发人员门户的域匹配。

注意

如果在产品范围而不是 API 范围内应用 CORS 策略,并且 API 通过标头使用订阅密钥身份验证,则控制台无法正常工作。

浏览器会自动发出 OPTIONS HTTP 请求,但该请求不包含带有订阅密钥的标头。 由于缺少订阅密钥,API 管理无法将 OPTIONS 调用与产品相关联,因此也就无法应用 CORS 策略。

解决方法之一是在查询参数中传递订阅密钥。

CORS 代理选项

在某些情况下(例如,如果 API 管理网关是网络隔离的),可以选择将开发人员门户本身配置为 CORS 代理,而不是为 API 启用 CORS 策略。 CORS 代理通过 API 管理实例中的门户后端路由交互式控制台的 API 调用。

注意

如果 API 是通过自承载网关进行公开,或者服务处于虚拟网络中,则需要从 API 管理开发人员门户的后端服务连接到网关。

若要配置 CORS 代理,请以管理员身份访问开发人员门户:

  1. 在 API 管理实例的“概述”页上,选择“开发人员门户”。 开发人员门户将在新的浏览器选项卡中打开。
  2. 在管理界面的左侧菜单中,选择“页面”>“API”>“详细信息”
  3. 在“API:详细信息”页上,选择“操作:详细信息”小组件,然后选择“编辑小组件”
  4. 选择“使用 CORS 代理”
  5. 保存对门户的更改,并重新发布门户

自承载开发人员门户的 CORS 配置

如果自承载开发人员门户,则需要以下配置才能启用 CORS:

  • 使用配置文件中的 backendUrl 选项指定门户的后端终结点。 否则,自承载门户不知道后端服务的位置。

  • 将 Origin 域值添加到自承载门户配置,指定托管自承载门户的环境了解详细信息

  • 有关配置策略的详细信息,请参阅设置或编辑策略
  • 有关 CORS 策略的详细信息,请参阅 cors 策略参考。