【发布时间】: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/4556546 和https://stackoverflow.com/a/51463965/4556546,它们描述了如何使用普通 CloudFront 分配解决问题。然而,我想知道:
- 在配置自定义域及其 关联的 CloudFront 分配?
- 在什么情况下我会选择具有内部 CloudFront 分配的自定义域而不是运行我自己的 CloudFront 分配 我可以配置吗? (我已经有一个 CloudFront 分配用于我的应用程序的其他部分。)有定价影响吗?
【问题讨论】:
-
你能解决你的问题吗?我有同样的问题。谢谢。
-
@LarryK,部分原因是我很愚蠢。从 API Gateway url xxxxxxxxxx.execute-api.region.amazonaws.com/dev/some_endpoint 更改为我的自定义域时,我忘记删除阶段,即从 api.dev.example.com/dev/some_endpoint 到 api.dev.example.com/some_endpoint。这解决了我的直接问题,我不再遇到 CORS 问题。
-
@LarryK,与此同时,我还与 AWS 雇用的一些解决方案架构师进行了交谈,令人惊讶的是,他们似乎对内置发行版的特殊状态知之甚少,但都表示正在运行链接中描述的我自己的分发是适当的前进方式。由此,我得出结论,没有办法进一步定制开箱即用的云端分发。
标签: amazon-web-services cors aws-api-gateway amazon-cloudfront