403 禁止 API 具有自定义域附加域的网关

403 Forbidden on API Gateway with Custom domain's aditional domain

我有一个 REST API 在 API 网关后面服务。

我有一个 Route53 托管区域:myAWSHostedDomain.myCompanyDomain.com

我还在 ACM 中创建了一个证书:myApp.myAWSHostedDomain.myCompanyDomain.com

证书有一个额外的域: myApp.myCompanyDomain.com

证书已颁发,没有任何问题,两个域都已验证。 在公司非 AWS 托管区域 myCompanyDomain.com 中,我有一个 CNAME 指向 myAppmyApp.myAWSHostedDomain.myCompanyDomain.com。它解决了。

我已经使用该证书为 API 网关配置了自定义域。显示的名称是 myApp.myAWSHostedDomain.myCompanyDomain.com。这很好,因为它是该证书的主域。

我遇到的问题是对 myApp.myCompanyDomain.com 发出的所有请求都因 403 Forbidden 错误而失败,而对 myApp.myAWSHostedDomain.myCompanyDomain.com 的那些相同请求有效正好。应用程序代码与它无关,对 favicon.ico 的请求行为相同。

API 网关端点配置为区域

难道APIGateway的自定义域只取证书中的主域,对附加域不起作用?有办法解决这个问题吗?

因此,问题是请求失败并出现 403 禁止错误,因为 API 网关无法设置正确的主机 header,这是请求成功所必需的。

如果我这样做:

curl https://myApp.myCompanyDomain.com/favicon.ico -H "Host:myApp.myAWSHostedDomain.myCompanyDomain.com"

然后,它起作用了。

因此,这里的选项如下:

  1. 在 Route53 中为 myApp.myCompanyDomain.com 创建一条 DNS 记录。
  2. 在调用 API 时,将主机 header 添加到请求中,并将值设置为 DNS 记录的值。
  3. 创建一个新的 API 网关,其中主要自定义域与 API 网关中的域相对应:myApp.myCompanyDomain.com 工作而不是 myApp.myAWSHostedDomain.myCompanyDomain.com work