在 AWS API 网关中配置跨域资源共享(CORS)时,常常会遇到来自 API 网关和授权人的 CORS 错误。这些错误表示我们的应用程序正在尝试从不同的域或来源请求资源,但该请求未被 API 网关授权或未配置 CORS。以下是解决此错误的步骤:
步骤1:在 AWS API 网关中启用 CORS
在“API 网关”界面上,选择您的 API,然后在左侧导航栏上单击“操作”下的“跨域资源共享(CORS)”。
步骤2:配置 CORS 选项
您需要至少提供一组允许的来源,方法和标题。以下是一个示例:
{ "allow_origins": ["*"], "allow_methods": ["POST", "PUT", "GET", "OPTIONS", "DELETE"], "allow_headers": ["Content-Type", "X-Amz-Date", "Authorization", "X-Api-Key"] }
步骤3:配置 Lambda 授权人
在神经网络中使用授权管理时,可以配置AWS Lambda 作为授权人并在请求期间对 API 进行授权验证。Lambda 代表您的应用程序检查所有请求并确定该请求是否合法。
步骤4:确保 Lambda 授权人正确配置
下面是一个Lambda 例子函数来代表一个授权人:
def lambda_handler(event, context): principal_id = 'user|a1b2c3d4' api_options = { 'allow_origins': ['*'], 'allow_methods': ['POST', 'PUT', 'GET', 'OPTIONS', 'DELETE'], 'allow_headers': ['Content-Type', 'X-Amz-Date', 'Authorization', 'X-Api-Key'] }
if 'origin' in event['headers']:
if event['headers']['origin'] in api_options['allow_origins']:
headers = {'Content-Type': 'application/json',
'Access-Control-Allow-Origin': event['headers']['origin'],
'Access-Control-Allow-Methods': ', '.join(api_options['allow_methods']),
'Access-Control-Allow-Headers': ', '.join(api_options['allow_headers'])}
policy = {
"principalId": principal_id,
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",