通过API网关从HTML发送POST请求到Python Lambda函数

问题描述 投票:2回答:2

我在AWS上有一个Lambda函数,它是用Python 3.6编写的,我也部署了我的API,并且我的所有资源都启用了CORS当我从AWS API网关测试POST时,它运行正常,我尝试时获得的成功相同来自Postman但是当我从我的S3存储桶中托管的html尝试它时它不起作用!我尝试像这样发布帖子请求:

$.ajax({
  type: 'POST',
  url: 'https://xxxxxxx.execute-api.us-east-1.amazonaws.com/dev/myapp',
  data: '{"fName":"jonas","lName": "Hoda", " Email":"[email protected]", "Age": 45, "Hight": 190, "Income": 120000}', 
  success: function(data) { alert('data: ' + data); },
  contentType: "application/json",
  dataType: 'json'
});

但我一直得到相同的响应:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,'http://app.my-real-domain.com'原产地不允许进入。响应具有HTTP状态代码400。

还有什么我需要做的?我是否需要在API或Python函数中编辑某些内容?请帮我解决这个问题,谢谢...

python api post aws-lambda aws-api-gateway
2个回答
1
投票

好的我找到了解决方案!首先我尝试了我在这里得到的所有想法并没有起作用其实大多数已经应用在我的项目中所以我试着看看问题是在API中还是在请求中,所以我在API中禁用了Request Validator-网关,突然间它工作了! post请求很好没有错误和lambda在后端工作,将数据存储在Dynamo DB并返回正确的响应,因此我在API-Gateway编辑了我的Model模式并删除了'required'部分并应用了它再一次现在一切都好!我不知道为什么这解决了这个问题特别是我查看了参数几十次并且它正在使用正确的名称和类型传递..无论如何我只是想分享这个如果其他人有这个问题并感谢任何人试图帮助我...


0
投票

似乎没有在您的资源上设置CORS。

控制台上有一个向导可帮助您在资源上设置CORS。该文档还有一个关于如何设置CORS的详细指南http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

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