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