从简单的 js 获取访问 AWS API Gateway -> Lambda 时出现 CORS 问题

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

我知道这里有很多与这种情况相关的问题,但我无法解决其中任何一个问题。这是情况和我尝试解决它的方法:

我在 AWS 中的 API 网关后面有一个 Node js lambda。与 POSTman 一起使用,但在一个简单的 HTML + JS 网站上,给我这个 CORS 错误:

从源“https://......”获取“https://......”的访问已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头存在于所请求的资源上。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

我尝试过的事情

  • 我为 lambda 创建了一个函数 url,以消除 API 网关的复杂性作为测试。
  • 在输出中添加了以下 CORS 标头,我可以在 POSTman 的响应中看到它们:
      "Content-Type":"application/json",
            "Access-Control-Allow-Headers" : "Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token",
            "Access-Control-Allow-Origin": "*",
            "Access-Control-Allow-Methods": "OPTIONS,POST,GET"
    }
  • 添加了一个 OPTIONS http 请求处理程序,它可以工作,我可以在网络选项卡中看到它。选项处理程序也有上面的标题
javascript amazon-web-services aws-lambda cors
1个回答
0
投票

听起来您在简化 Lambda 函数并向响应添加 CORS 标头方面取得了一些进展。使用 Lambda 的函数 URL 确实可以简化流程,并在某些场景中消除对 API 网关的需要。

确保响应中存在 CORS 标头对于允许跨源请求并防止客户端应用程序访问 Lambda 函数出现问题至关重要。在 POSTman 的响应中看到标头表明它们已被正确应用。

继续努力,如果您在此过程中遇到任何进一步的挑战或有任何疑问,请随时与我们联系! 问候

© www.soinside.com 2019 - 2024. All rights reserved.