将 http:// 请求重定向到 AWS API 网关上的 https://(使用自定义域)

Redirect http:// requests to https:// on AWS API Gateway (using Custom Domains)

我正在使用 AWS API Gateway with a custom domain。当我尝试访问 https://www.mydomain.com 时它运行良好,但是当我尝试 http://www.mydomain.com 连接不上

有没有办法在 API 网关中使用自定义域重定向 http -> https?如果没有,是否有办法让 http:// 链接像 https:// 链接一样工作?

API 网关不直接支持没有 TLS 的 http,大概是作为一种安全功能,以及一些实际考虑。

一般来说,对于 API 没有特别好的方法来执行此操作,因为将 POST 请求从 HTTP 重定向到 HTTPS 实际上有点毫无意义——数据是在生成重定向时已经不安全地发送,除非客户端要求服务器在发送 body 之前检查请求 headers,Expect: 100-continue.

您可以创建 CloudFront 分配,并将其配置为将 GETHEAD 请求从 HTTP 重定向到 HTTPS...但是如果您将 POST 请求发送到此类分发,CloudFront 不会重定向——它只会抛出一个错误,因为(如前所述)这样的重定向弊大于利。

但是...如果 GET 是您的应用程序,那么它非常简单:首先,使用区域部署您的 API( 而不是 Edge-Optimized) API 具有 system-assigned 主机名的端点,而不是自定义域。

然后,创建一个使用此区域 API 端点作为其源服务器的 CloudFront 分配,并将 CloudFront 分配的行为配置为将 HTTP 重定向到 HTTPS。将您的自定义域名与 CloudFront 分配相关联,而不是直接与 API 网关相关联。