具有Angular的AWS API网关

dud*_*key 7 amazon-web-services cors angularjs aws-api-gateway

有没有人让AWS API Gateway与Angular.js前端一起工作?我有一个lambda函数,它通过API网关中的POST方法公开.我按照此文档的说明设置了标头:http: //docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

我在Postman中进行了测试,效果很好.我没有做任何特别的事情,但是当我进行$http.post()呼叫时,我只No 'Access-Control-Allow-Origin'在所请求的资源上出现标题.http://localhost:9000因此不允许原点访问.答复HTTP status code 500.就是回应.

Jac*_*AWS 8

Api Gateway团队在这里.

希望到现在为止,您已经在控制台中检查了新的"启用CORS"功能.即使您的开发工作流程在控制台之外,您也可以快速设置测试API并查看控制台为您设置的标头配置,然后将这些配置复制到您的Swagger def或您提出的任何解决方案.

文档指南仍应适用于任何一种情况.您将需要3个标头:Access-Control-Allow-Methods,Access-Control-Allow-Origin和Access-Control-Allow-Headers.这些值取决于您的API.

如果您想向我发送您尝试调用的API资源,我可以从我们这边看一看.

  • 我花了一个小时试图找出你的文档无法正常工作的原因,这实际上不是你文档的错,而是我之后没有部署API.你能考虑把它放在你的文件中:http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html (2认同)

Aks*_*ala 6

我目前有一个通过API网关和Lambda运行的POST函数,该函数可以从带有CORS的Angular客户端访问。虽然我不知道您的配置是什么,但我可以共享所有相关设置,以希望您找到丢失的内容。目前,启用CORS相当麻烦(希望这是Amazon正在修复的问题),这需要在文档非常差的很多领域中采取许多小步骤。

我的资源有2种方法(OPTIONS和POST),我将共享每种方法的相关设置:

POST:
方法请求:没什么特别的。就我的端点而言,我的路由参数之一在“请求路径”下有一个选项。我没有使用查询字符串,因此URL查询字符串为空。HTTP请求标头也为空。

集成请求:
集成类型:Lambda映射模板:我有一个(应用程序/ json),带有一个模板,用于从请求主体传递适当的值并将参数路由到我的lambda函数。

方法响应:
展开200状态代码字段。为“ Access-Control-Allow-Origin”添加标题,然后单击复选标记按钮将其保存。您可能需要对其他状态码执行此操作。

集成响应:
展开200响应状态字段。在“标题映射”下,将映射值修改为包含“ *”。单引号是必需的。您可能需要对其他任何集成响应执行此操作。

选项:
方法请求:
没什么特别的,就像POST方法一样。

集成请求:
我将其设置为模拟集成。根据Amazon的说法,这无关紧要,所以我只是将其设置为模拟,因为我们真正需要做的就是用适当的标头响应200。没有映射模板。

方法响应:
展开200状态代码字段。添加以下3个响应标头,并将其与复选框一起保存:Access-Control-Allow-HeadersAccess-Control-Allow-MethodsAccess-Control-Allow-Origin。没有其他状态代码。

集成响应:
展开200响应状态字段。正则表达式为空(设置为默认值),并且此方法仅具有200响应。展开标题映射并将标题设置为以下映射值:

Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Requested-With'
Access-Control-Allow-Methods: 'GET,POST,OPTIONS'    
Access-Control-Allow-Origin:  '*'
Run Code Online (Sandbox Code Playgroud)

没有映射模板。

然后部署您的API。希望它现在允许CORS请求。我遇到了与您完全相同的问题,并且可以肯定地确定该问题缺少Access-Control-Allow-Headers中的X-Requested-With值。