在AWS API Gateway中,CORS和API密钥认证可以一起使用。下面是一个使用AWS API Gateway的CORS和API密钥认证的示例解决方案。
首先,确保在API Gateway中启用了CORS和API密钥认证。
然后,在API Gateway中创建一个OPTIONS方法来处理预检请求,并在该方法上启用CORS。
以下是一个示例的Lambda函数代码,用于处理预检请求和实际请求:
import json
def lambda_handler(event, context):
if event['httpMethod'] == 'OPTIONS':
# 处理预检请求
response = {
'statusCode': 200,
'headers': {
'Access-Control-Allow-Origin': '*', # 允许来自任何来源的请求
'Access-Control-Allow-Headers': 'Content-Type,Authorization', # 允许的请求头
'Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE' # 允许的请求方法
}
}
return response
else:
# 处理实际请求
# 验证API密钥
api_key = event['headers'].get('Authorization')
if api_key != 'YOUR_API_KEY': # 替换为您的API密钥
response = {
'statusCode': 401,
'body': json.dumps('Unauthorized')
}
return response
# 返回实际响应
response = {
'statusCode': 200,
'body': json.dumps('Hello, World!')
}
return response
在此示例中,我们在Lambda函数中处理了预检请求和实际请求。对于预检请求,我们返回了适当的CORS响应头。对于实际请求,我们首先验证了API密钥,然后返回实际响应。
请注意,上述示例中的API密钥验证只是一个简单的示例,您可以根据自己的需求进行更复杂的验证逻辑。
在API Gateway中,将该Lambda函数配置为您的资源的集成。然后,您可以测试使用CORS和API密钥认证的API。
这就是使用AWS API Gateway的CORS和API密钥认证的解决方案。希望对你有所帮助!