我试图通过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
复制相似问题