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

时间:2017-11-15 15:20:50

标签: amazon-web-services aws-sdk aws-api-gateway amazon-route53

我正在使用AWS API Gateway with a custom domain。当我尝试访问 https ://www.mydomain.com时,它运行正常,但当我尝试 http ://www.mydomain.com时,它可以'连接。

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

1 个答案:

答案 0 :(得分:10)

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

通常没有一种特别好的方法可以为API执行此操作,因为将POST请求从HTTP重定向到HTTPS实际上有点没有意义 - 在重定向时,数据已经不安全地发送了生成,除非客户端已通过Expect: 100-continue要求服务器在发送正文之前检查请求标头。

您可以创建CloudFront分配,并将其配置为将GETHEAD请求从HTTP重定向到HTTPS ...但是如果您向此类分发发送POST请求, CloudFront不会重定向 - 它只会引发错误,因为(如上所述)这样的重定向会比有用的更有害。

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

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