联系 AWS REST API 时“请求的资源上不存在‘access-control-allow-origin’标头”

时间:2021-06-11 17:41:56

标签: amazon-web-services api rest aws-lambda aws-api-gateway

这不是一个问题,而是一个解决方案。 我与错误斗争了几天,并且一直在错误的地方寻找,因为我在网上找不到任何关于它的信息。所以我决定把它发布给其他有同样问题的人。

我一直在尝试调用 AWS API,该 API 将调用 AWS Lambda 函数(对于不熟悉的人来说,基本上是后端代码)。但是,我一直遇到一个问题是一个错误说明

<块引用>

访问 XMLHttpRequest 在 [API URL] from origin [Website URL] 已被 CORS 政策阻止: 请求的资源上不存在“Access-Control-Allow-Origin”标头。

会在我调用 API 的网站的控制台中弹出。

我在 Amazon API 中启用了 CORS,所以它应该不会引起问题。

几天后,我发现问题不在于 API,而在于 lambda 函数本身。

问题源于 lambda 函数将返回的响应。尽管并非总是必要的,但有时需要 lambda 函数在与 API 通信时返回 HTTP 响应(例如在我的情况下)。 但是,由于我的回复没有任何标题,因此引起了问题。我返回以下响应:

response = {
  "statusCode": 200,
  "body": "",
  "isBase64Encoded": false
};

此外,由于 API 已设置为使用 Lambda 代理集成,因此通信就像 lambda 函数将响应直接发送到网站一样,而不是通过设置了 CORS 方法的 API 发送。

所以,为了解决这个问题,我对代码进行了如下修改:

response = {
  "statusCode": 200,
  "headers": {
     "Access-Control-Allow-Origin": "*",
   },
   "body": "",
    "isBase64Encoded": false
};

0 个答案:

没有答案