当前位置: 首页 > 知识库问答 >
问题:

无法使用Lambda和API网关访问API

黄弘深
2023-03-14

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

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

callback(null, response);

但是我在前端角度应用程序中得到以下误差。

CORS策略阻止从来源“HTTP://127.0.0.1:8080”访问位于“https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/price”的XMLHttpRequest:对飞行前请求的响应没有通过访问控制检查:它没有HTTP ok状态。

共有1个答案

余天宇
2023-03-14

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

假设我在/post products有一个endpoint。我不得不在/options products添加另一个endpoint,并将其与一个简单的Lambda函数集成,该函数只返回HTTP 200 OK(或HTTP 204 No Content),以及“Access-Control-Allog-Origin”:“*”标头(或者更好的方法是指定您的Origine/Client的URL)。

这是因为浏览器在发出实际请求(请参阅更多信息)之前,对所有HTTP请求发出preflight/options请求,除了getpost,这些请求具有某些MIME类型(source)。

 类似资料:
  • 我需要从endpoint获取一些数据,然后根据响应将这些数据存储到数据库中。

  • 我创建了一个简单的python 3.7 lambda函数: 此函数用于从s3存储桶中读取json文件。json文件如下所示: {id: 1, name: John, pwd:密码} 响应:{“statusCode”:200,“headers”:{“Content Type”:“application/json”},“body”:{“id”:1,“name”:“John”,“pwd”:“passwo

  • 我创建了一个节点。js(使用ExpressJS)微服务,并使用向Eureka Discovery Server注册。 我已经在Eureka注册了一些基于Java的微服务,并通过Zuul API网关使用它们。 当我尝试调用节点上的特定endpoint时。js微服务通过API网关,抛出错误: 注意:是我的演示服务应用程序的名称。

  • 我更倾向于使用Lambda和Java8来设置,但是使用node.js的示例也有助于理解如何实现这一点。

  • 我的VPC中有Public和Pvt子网。我在Pvt子网上有一些运行在EC2上的服务,需要通过外部/移动资源访问。我如何做到这一点-是VPCLink和NLB的方式来做到这一点,还是任何其他方式,创建一些访问点在公共子网(??)。Lambda似乎是答案(现在AWS中几乎所有的东西)--甚至不确定那种访问对于Pvt子网中的资源是如何工作的。 同样,同一个Pvt子网可以访问外部资源(在AWS之外)-我如何

  • 参考:https://www.w3schools.com/tags/ref_urlencode.asp