AWS API Gateway 启用 CORS 跨域请求

AWS REST API 要能正常跨域请求,在 API Gateway,Lambda Function 都需要额外的配置。

⚠️注意:先在类似 Postman 工具里测试 API 已经能正常执行,确认可以返回正确的结果。

有助于理解后续步骤和处理可能出现的问题。
参考文章:阮一峰:跨域资源共享 CORS 详解

可参考 官方文档

API Gateway → Resources → 选择 API,
Actions → Enable CORS,
选上 4XX,选上 5XX;
点击按钮 「Enable CORS」

Lambda Function 在返回结果时也要添加 header : Access-Control-Allow-Origin:'?'

Python 代码举例:

return {
        'statusCode': 200,
        'headers': {Access-Control-Allow-Origin:'*'},
        'body': json.dumps(data)
    }
  • 允许所有域名的跨域请求
    其中 Access-Control-Allow-Origin:'*'

  • 只允许指定的域名跨域,
    则将*星号替换为指定域名即可

  • 要允许多个指定域名,
    方法是判断请求来源的域名之后,返回对应的域名。更多详情可参考➦掘金的这篇文章

最后别忘了更新部署。

若浏览器端使用 JS fetch(),需要注意这几个参数:

credentials: 'same-origin' 
headers: {
    'Authorization': 'Bearer ' + id_token //如果请求的 API 开启了 token 验证
},
method: 'GET', //根据 API 提供的访问方法而定
mode: 'cors',