更新时间:2023-11-10 GMT+08:00

配置跨域资源共享策略

出于安全性考虑,浏览器会限制从页面脚本内发起的跨域请求,此时页面只能访问当前域的资源。CORS允许浏览器向跨域服务器发送XMLHttpRequest请求,从而实现跨域访问。更多跨域访问的说明请参见配置跨域访问API

ROMA Connect支持通过插件策略的方式,为API提供灵活的扩展能力。跨域资源共享策略为跨域访问提供指定预检请求头和响应头、自动创建跨域预检请求API的扩展能力,可快速、灵活的实现API的跨域访问。

插件策略和API本身相互独立,只有为API绑定插件后,插件策略才对API生效。为API绑定插件策略时需指定发布环境,插件只对指定环境上的API生效。

约束与限制

  • 同一个API在同一个环境中只能绑定一个相同类型的插件策略,已被API绑定的插件策略无法删除。
  • 同一API分组下,发布在同一环境且请求路径相同的所有API,只能绑定同一个跨域资源共享策略。
  • 若API开启了“支持CORS”功能的同时,也绑定了跨域资源共享策略,则以绑定的插件策略为准。
  • 若某个请求路径下有OPTIONS方法的API,则在OPTIONS方法API所在发布环境中,该请求路径的所有API均不允许绑定跨域资源共享策略。
  • 为API绑定插件策略时,API的请求方法必须为allow_methods中允许的请求方法。

创建跨域资源共享策略

  1. 登录ROMA Connect控制台,在“实例”页面单击实例上的“查看控制台”,进入实例控制台。
  2. 在左侧的导航栏选择“服务集成 APIC > API策略”,在“策略管理”页签下单击“创建策略”。
  3. 在选择策略类型弹窗中选择“插件策略 > 跨域资源共享”。
  4. 在配置策略弹窗中配置插件策略信息。
    表1 策略配置

    参数

    说明

    策略名称

    填写策略的名称,根据规划自定义。建议您按照一定的命名规则填写策略名称,方便您快速识别和查找。

    策略类型

    固定为“跨域资源共享”。

    可见范围

    选择策略的可见范围。

    • 集成应用:策略归属某个集成应用,仅拥有该集成应用权限的用户可查看和使用该策略。
    • 全局:当前实例的所有用户都可查看和使用该策略。

    集成应用

    仅当“可见范围”选择“集成应用”时需要配置。

    选择策略所属的集成应用。若没有可用的集成应用,可单击右侧的“新建集成应用”,创建一个集成应用。

    描述

    填写策略的描述信息。

    策略内容:支持表单模式和脚本模式两种方式,脚本模式配置请参见脚本配置示例

    Allowed Origins

    Access-Control-Allow-Origin响应头,指定允许访问API的外域URI,多个URI之间使用英文逗号隔开。

    对于未携带身份凭证的请求,可以把参数值设置为“*”,表示允许来自所有域的访问请求。

    Allowed Methods

    Access-Control-Allow-Methods响应头,选择允许使用的HTTP请求方法。

    Allowed Headers

    Access-Control-Allow-Headers响应头,指定XMLHttpRequest请求中允许携带的请求头字段,多个请求头之间使用英文逗号隔开。

    其中,简单请求头Accept、Accept-Language、Content-Language、Content-Type(取值仅限为application/x-www-form-urlencoded、multipart/form-data、text/plain时)默认允许在请求中携带,无需在该参数中设置。

    Exposed Headers

    Access-Control-Expose-Headers响应头,指定XMLHttpRequest请求响应中允许携带的响应头字段,多个响应头之间使用英文逗号隔开。

    其中,基本响应头Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma默认允许在响应中携带,无需在该参数中设置。

    Maximum Age

    Access-Control-Max-Age响应头,指定本次预检请求的有效期,单位为秒。在有效期内,无需再次发出预检请求。

    Allow Credentials

    Access-Control-Allow-Credentials响应头,表示是否允许浏览器读取请求响应的内容。

  5. 单击“确定”,完成插件策略的创建。

    插件策略创建后,您还需要为API绑定插件策略,才能使插件策略对API生效。

为API绑定插件策略

  1. 在“策略管理”页签右上角的过滤条件中选择“跨域资源共享”。
  2. 在页面中单击策略的名称,进入策略详情页面。
  3. 在“关联API”下选择要绑定API的环境,然后单击“绑定API”。
  4. 在绑定API弹窗中,勾选要绑定策略的API。

    您可以通过指定API分组和API名称,筛选所需API。

  5. 单击“确定”,完成API与插件策略的绑定。

脚本配置示例

{
  "allow_origin": "*",
  "allow_methods": "GET,POST,PUT",
  "allow_headers": "Accept-Ranges,Cache-Control",
  "expose_headers": "X-Request-Id,X-Apig-Latency",
  "max_age": 172800,
  "allow_credentials": true
}