node.js - 无法使用 Lambda 和 API 网关访问 API

标签 node.js amazon-web-services aws-lambda aws-api-gateway

我有一个返回以下响应的 aws lambda 函数:

var responseBody = { cost: price };
var response = {
   statusCode: 200,
   headers: {
          "Access-Control-Allow-Origin": "*"
     },
    body: JSON.stringify(responseBody),
    isBase64Encoded: false
};

callback(null, response);

但我的前端 Angular 应用程序出现以下错误。

Access to XMLHttpRequest at 'https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/price' from origin 'http://127.0.0.1:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

最佳答案

如果您使用的是 API Gateway HTTP API(不确定这是否与 REST API 相关):

假设我在 /POST products 有一个端点。我必须在 /OPTIONS products 添加另一个端点,并将其与一个简单的 Lambda 函数集成,该函数只返回 HTTP 200 OK(或 HTTP 204 No Content),以及 "Access-Control-Allow-Origin": "*" header (或者更好,指定您的来源/客户端的 URL)。

这是因为浏览器在发出实际请求(参见 more )之前向同一端点发出预检 /OPTIONS 请求,对于除 GET 之外的所有 HTTP 请求和 POST 使用某些 MIME 类型 ( source )。

关于node.js - 无法使用 Lambda 和 API 网关访问 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350270/

相关文章:

aws-lambda - 如何找到我的 lambda 所在的跟踪 ID?

javascript - Passport mongoose Object #<Schema> 没有方法 'authenticate' 但我可以看到该方法

node.js - 在项目中安装包后运行 npm 脚本

javascript - 我还需要 babel 和 NodeJs5 吗?

amazon-web-services - 我是否可以将新的 IAM 角色附加到正在运行的实例?

javascript - AWS "Cannot GET/"

javascript - 避免在 promise 链中调用 next() 时创建的 promise 没有从它返回

mysql - 无法从 Lumen 连接到亚马逊 AWS RDS Mysql

java - 从 InputStream 将 tif 文件编码为 Base64

aws-lambda - AWS AppSync 在解析子资源之前等待 DynamoDB Streams Lambda 函数