HTTP API 启用 CORS 时是否需要添加 OPTIONS 方法?

问题描述 投票:0回答:1

我的情况:

我有一个 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 返回所需的标头。

  • 卷曲也将它们归还给我。我不明白为什么它不返回它们。

amazon-web-services http curl aws-api-gateway aws-api-gateway-v2
1个回答
0
投票

可能有点晚了,但我想我会分享我们的工作成果,因为我们遇到了类似的问题。

我们的具体问题是,我们使用多个代理集成到不同的 Lambda 函数,每个函数都处理多个端点和 HTTP 方法。

当我们启用 CORS 时,似乎因为我们对每个集成使用了 ANY 方法,所以它会将请求发送到我们的 Lambda 函数。

当我们停止使用 ANY 并单独添加每个 HTTP 方法时,OPTIONS 请求成功返回,前端很高兴。

要点:

  • 我们不必自己处理 OPTIONS 请求
  • 我们的 Lambda 函数不处理任何 COR 标头,因此由 API GW 自动添加
© www.soinside.com 2019 - 2024. All rights reserved.