这个问题可能是由于浏览器的CORS策略所致,可以通过在Lambda函数中添加CORS标头来解决它。以下是一个示例Lambda函数代码:
import json
import boto3
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
table = dynamodb.Table('myTable')
if event['httpMethod'] == 'OPTIONS':
headers = {
'Access-Control-Allow-Headers': 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
'Access-Control-Allow-Origin': 'https://your-website.com',
'Access-Control-Allow-Methods': 'OPTIONS,POST'
}
return {
'statusCode': 200,
'headers': headers,
'body': json.dumps('Hello from Lambda!')
}
elif event['httpMethod'] == 'POST':
headers = {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'https://your-website.com'
}
data = json.loads(event['body'])
table.put_item(Item=data)
return {
'statusCode': 200,
'headers': headers,
'body': json.dumps('Data Successfully Added to DynamoDB!')
}
在这个示例Lambda函数中,我们处理了CORS选项,并添加了'Access-Control-Allow-Origin”和'Access-Control-Allow-Methods”标头来允许来自我们网页的请求。请注意,'Access-Control-Allow-Origin'需要指向你自己的网页URL。
然后,我们在Lambda函数的POST方法中添加了一个新的标头:'Content-Type”,以指定我们正在发送的数据类型。最后,我们创建了一个新的DynamoDB表,并将POST数据添加到其中。
现在,当你向Lambda函数发送POST请求时,CORS应该是没有问题了,您可以在网页上访问它。