为 API Gateway REST API 资源启用 CORS

跨源资源共享 (CORS) 是一项浏览器安全功能,该功能限制从在浏览器中运行的脚本启动的跨源 HTTP 请求。若是您的 REST API 的资源接收非简单跨源 HTTP 请求,您须要启用 CORS 支持。html

启用 CORS 支持意味着什么

当浏览器接收非简单 HTTP 请求时,CORS 协议将要求浏览器在发送实际请求以前向服务器发送一个预检请求,并等待服务器的批准(或请求凭证)。预检请求 将向您的 API 显示为 HTTP 请求:后端

  • 包含一个 Origin 标头。api

  • 使用 OPTIONS 方法。浏览器

  • 包含如下标头:安全

    • Access-Control-Request-Method服务器

    • Access-Control-Request-Headerscors

所以,为了支持 CORS,REST API 资源须要实施一个 OPTIONS 方法,该方法能够响应 OPTIONS 预检请求,该请求至少具备由 Fetch 标准强制执行的如下响应标头:ide

  • Access-Control-Allow-Methodsfetch

  • Access-Control-Allow-Headersui

  • Access-Control-Allow-Origin

启用 CORS 支持的方式取决于您的 API 的集成类型。

使用 API Gateway 控制台在资源上启用 CORS

您可使用 API Gateway 控制台为已建立的 REST API 资源上的一个或全部方法启用 CORS 支持。

重要

资源能够包含子资源。为某个资源及其方法启用 CORS 支持不会以递归方式为子资源及其方法启用它。

在 REST API 资源上启用 CORS 支持

  1. 经过 https://console.aws.amazon.com/apigateway 登陆 API Gateway 控制台。

  2. 从 API 列表中选择 API。

  3. 在 Resources (资源) 下选择一个资源。这将为资源上的全部方法启用 CORS。

    或者,您也能够在资源下选择一个方法,仅为此方法启用 CORS。

  4. 操做下拉菜单中选择 Enable CORS (启用 CORS)

    
                        选择“Enable CORS (启用 CORS)”
  5. 在 Enable CORS (启用 CORS) 表单中,执行如下操做:

    1. 在 Access-Control-Allow-Headers 输入字段中,键入客户端必须在实际资源请求中提交的逗号分隔标头列表的静态字符串。使用控制台提供的 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token' 标头列表,或指定您本身的标头。

    2. 将控制台提供的 '*' 的值用做 Access-Control-Allow-Origin 标头值,以容许来自全部源的访问请求,或指定容许访问该资源的源。

    3. 选择 Enable CORS and replace existing CORS headers (启用 CORS 并替换现有 CORS 标头)

    
                        选择容许的标头

    重要

    若是在代理集成中将以上说明应用于 ANY 方法,那么将不会设置任何适用的 CORS 标头。相反,您的后端必须返回适用的 CORS 标头,例如 Access-Control-Allow-Origin

  6. 在 Confirm method changes (确认方法更改) 中,选择 Yes, overwrite existing values (对,覆盖现有值) 以确认新的 CORS 设置。

    
                        确认覆盖现有值

在 GET 方法上启用 CORS 后,若是资源中没有 OPTIONS 方法,则该方法将添加到资源中。OPTIONS 方法的 200 响应会自动配置为返回三个 Access-Control-Allow-* 标头,以完成预检握手。此外,默认状况下,实际 (GET) 方法还会配置为在 200 响应内返回 Access-Control-Allow-Origin 标头。对于其余类型的响应,若是您不但愿返回 Cross-origin access 错误,您将须要手动对其进行配置,以返回带有“*”或特定源的 Access-Control-Allow-Origin' 标头。

在您的资源上启用 CORS 支持后,您必须部署或从新部署 API 以使新设置生效。有关更多信息,请参阅从 API Gateway 控制台部署 REST API

相关文章
相关标签/搜索