无法使用 Lambda 和 API Gateway 访问 API

Har*_*rry 0 amazon-web-services node.js 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);
Run Code Online (Sandbox Code Playgroud)

但是我在前端 Angular 应用程序中收到以下错误。

CORS 政策已阻止在“ https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/price ”处访问 XMLHttpRequest,来自源“ http://127.0.0.1:8080 ”:响应预检请求未通过访问控制检查:它没有 HTTP ok 状态。

Dav*_*iao 6

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

假设我在/POST products. 我不得不在 at添加另一个端点/OPTIONS products并将其与一个简单的 Lambda 函数集成,该函数只返回 HTTP 200 OK(或 HTTP 204 No Content)和"Access-Control-Allow-Origin": "*"标头(或者甚至更好,指定源/客户端的 URL)。

这是因为浏览器发出预检/OPTIONS请求到同一个端点,发出的实际要求(见之前更多),除了为所有HTTP请求GET,并POST与某些MIME类型(来源)。