我的情况:
我有一个 HTTP API,与 API Gateway 中的 AWS Lambda 代理集成一起使用,具有 GET 和 POST 方法。 我想为其启用 CORST。
疑问,是否必须将 OPTIONS 方法添加到 Access-Control-Allow-Methods 中? 在 HTTP APIs 文档中,我评论了 HTTP APIs 不是 REST API: 已指定: 如果您配置 CORS API 网关,即使您没有 OPTIONS 路由,它也会自动返回对初步 OPTIONS 请求的响应。
这是否意味着我必须将 OPTIONS 方法添加到 Access-Control-Allow-Methos 才能正常工作?
我尝试过的:
如果我不启用 CORS:
In the frontend. when making a GET request I receive an CORS error during the preliminary OPTIONS request.
如果我启用 CORS 而不向 Access-Control-Allow-Methods 添加选项:
* On the fronted. When making a GET request, it works correctly. In the header of the OPTIONS response I receive Access-Control-Allow-Methods: GET,POST
* Performing curl from ubuntu. When I make the OPTIONS request I don't get back the ccess-Control-Allow-Method header. Code 204
如果我通过向 Access-Control-Allow-Methods 添加选项来启用 CORS:
It works the same way as above but on frontend obviously I also get OPTIONS apart from GET and POST.
我期望发生什么:
forntend 在执行 GET 时工作正常,也就是说 OPTIONS 返回所需的标头。
卷曲也将它们归还给我。我不明白为什么它不返回它们。
可能有点晚了,但我想我会分享我们的工作成果,因为我们遇到了类似的问题。
我们的具体问题是,我们使用多个代理集成到不同的 Lambda 函数,每个函数都处理多个端点和 HTTP 方法。
当我们启用 CORS 时,似乎因为我们对每个集成使用了 ANY 方法,所以它会将请求发送到我们的 Lambda 函数。
当我们停止使用 ANY 并单独添加每个 HTTP 方法时,OPTIONS 请求成功返回,前端很高兴。
要点: