【问题标题】:AWS API Gateway with custom domain and CORS具有自定义域和 CORS 的 AWS API Gateway
【发布时间】:2022-03-13 03:13:19
【问题描述】:

我有一个启用了 CORS 和自定义域设置的 AWS API Gateway API。通过 execute-api 端点的直接 API 访问工作正常,我在浏览器中没有遇到 CORS 问题。通过我还配置的自定义域api.example.com 进行访问,原则上是有效的,但不是在我获得 CORS 的浏览器中:

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 

在设置自定义域时,API Gateway 会配置自己的 CloudFront 分配,这在某种程度上是内部的,我不知道如何配置它,或者即使这可能,它也不会显示在我的 CloudFront 分配列表中,这是期待。来自 AWS docs

API Gateway 创建的 CloudFront 分配由 附属于 API Gateway 的区域特定帐户

我找到了这些答案https://stackoverflow.com/a/52435619/4556546https://stackoverflow.com/a/51463965/4556546,它们描述了如何使用普通 CloudFront 分配解决问题。然而,我想知道:

  1. 在配置自定义域及其 关联的 CloudFront 分配?
  2. 在什么情况下我会选择具有内部 CloudFront 分配的自定义域而不是运行我自己的 CloudFront 分配 我可以配置吗? (我已经有一个 CloudFront 分配用于我的应用程序的其他部分。)有定价影响吗?

【问题讨论】:

  • 你能解决你的问题吗?我有同样的问题。谢谢。
  • @LarryK,部分原因是我很愚蠢。从 API Gateway url xxxxxxxxxx.execute-api.region.amazonaws.com/dev/some_endpoint 更改为我的自定义域时,我忘记删除阶段,即从 api.dev.example.com/dev/some_endpointapi.dev.example.com/some_endpoint。这解决了我的直接问题,我不再遇到 CORS 问题。
  • @LarryK,与此同时,我还与 AWS 雇用的一些解决方案架构师进行了交谈,令人惊讶的是,他们似乎对内置发行版的特殊状态知之甚少,但都表示正在运行链接中描述的我自己的分发是适当的前进方式。由此,我得出结论,没有办法进一步定制开箱即用的云端分发。

标签: amazon-web-services cors aws-api-gateway amazon-cloudfront


【解决方案1】:

您从我的新自定义域中删除舞台或“/dev”的建议非常有效。

api.example.com/dev/some_endpoint 不正确
api.example.com/some_endpoint 正确

希望这个答案可以帮助任何尝试将自定义域添加到 AWS API Gateway 的人。

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 1970-01-01
    • 2020-09-16
    • 2020-10-04
    • 2018-12-26
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多