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

时间:2017-12-08 17:20:45

标签: python api post aws-lambda aws-api-gateway

我在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":"abcd@zxy.net", "Age": 45, "Hight": 190, "Income": 120000}', 
  success: function(data) { alert('data: ' + data); },
  contentType: "application/json",
  dataType: 'json'
});

但我一直得到同样的答复: No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://app.my-real-domain.com'因此不允许访问。响应的HTTP状态代码为400。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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