文档首页/ API网关 APIG/ 用户指南/ API策略/ 跨域资源共享策略说明
更新时间:2024-07-29 GMT+08:00

跨域资源共享策略说明

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

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

如果此策略在当前实例中不支持,请联系技术支持升级实例到最新版本。

使用限制

  • 已了解前提条件
  • 同一API分组下,相同请求路径的所有API,只能绑定同一个跨域资源共享策略。
  • 如果API开启了“支持CORS”功能的同时,也绑定了跨域资源共享策略,则以绑定的策略为准。
  • 如果某个请求路径下有OPTIONS方法的API,则该请求路径下的所有API均不允许绑定跨域资源共享策略。
  • 为策略绑定API时,API的请求方法必须为allow_methods中允许的请求方法。

配置参数说明

表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时)默认允许在请求中携带,无需在该参数中设置。

说明:
  • 创建跨域资源共享策略时,默认不配置Allowed Headers,不允许跨域请求携带任何自定义请求头。
  • 配置Allowed Headers为“*”,表示允许跨域请求头携带所有请求头。

Exposed Headers

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

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

说明:
  • 创建跨域资源共享策略时,默认不配置Exposed Headers,不允许浏览器的JavaScript代码解析跨域访问获得的响应头内容(除XMLHttpRequest对象的getResponseHeader()方法获得的基本响应头,Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma)。
  • 配置Exposed Headers为“*”,表示允许浏览器的JavaScript代码解析跨域访问获得的所有响应头内容。

Maximum Age

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

Allowed Credentials

Access-Control-Allow-Credentials响应头,定XMLHttpRequest请求中是否允许携带Cookie。

  • 开关开启表示允许。
  • 开关关闭表示不允许。

脚本配置示例

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