我试图通过API网关将一些数据从我的React应用程序发送到AWS Lambda。这是我目前的反应代码:
const exampleObj = { firstName: 'Test', lastName: 'Person' };
fetch(process.env.REACT_APP_PUSH_API_ENDPOINT, {
  method: 'POST', // or 'PUT','
  mode: 'cors',
  body: JSON.stringify(exampleObj),
})
  .then((response) => {
    return response.json();
  })
  .then((json) => console.log(json));我一直收到一个Internal Server Error错误。当我试图添加'Access-Control-Allow-Origin: '*'的头时,我会得到一个Reason: CORS header ‘Access-Control-Allow-Origin’ missing错误。我知道这个消息是因为CORS而产生的,但是我尝试了几种不同的方法,包括添加代理。我的AWS Lambda代码如下所示:
import json
def lambda_handler(event, context):
    name = event['firstName']
    
    return {
        "statusCode": 200,
        "headers": {
            "Access-Control-Allow-Origin" : "*",
            "Access-Control-Allow-Credentials" : True
        },
    "body": json.dumps({
        "name": name
    })
}我发现,当我试图从Lambda中的事件中获取POST数据时,就会出现这个问题。我不知道该怎么做,我们非常感谢你的帮助。
编辑:我使用创建我的React应用程序,我使用Firefox进行测试。然而,由于CORS错误和火狐不允许http://localhost:3000访问https链接,我在Chrome上进行了测试,结果得到了相同的错误。
编辑2:我想明白了!我能够登录到CloudWatch (感谢那些帮助我的评论中的人),我意识到当它使用postData = json.loads(event['body'])进入AWS时,我不得不“解开”它。其余代码保持不变。
如果有人能结束这个问题/把它标记为已解决,那就太好了。谢谢!
发布于 2021-12-13 19:30:05
在Lambda函数中,首先尝试加载事件:
def handler(event, context):
  incoming_body = json.loads(event['body'])
  firstname= incoming_body['firstname']
  return {
      'statusCode': 200,
      'headers': {
          'Access-Control-Allow-Headers': '*',
          'Access-Control-Allow-Origin': '*',
          'Access-Control-Allow-Methods': 'OPTIONS,POST,GET'
      },
      'body': json.dumps(firstname)https://stackoverflow.com/questions/65763615
复制相似问题