无法为API网关功能启用CORS

时间:2017-08-22 14:44:43

标签: amazon-web-services cors aws-api-gateway

我得到了

enter image description here

尝试在API网关上启用CORS时,为什么会这样,我该如何解决?使用AWS SAM部署这些功能。但我注意到,如果我通过AWS Console创建自己的API,那么也会发生这种情况

错误如下:

  • 指定的无效模型名称application / json = Empty
  • 指定的响应状态代码无效

我发现我似乎需要添加一个"空"回应模特自己?

现在,我得到了

  

将Access-Control-Allow-Origin集成响应标头映射添加到POST方法(指定的响应状态代码无效)

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:12)

首先请选择您的根资源并选择“启用CORS”。它将为所有方法启用CORS。理想情况下它应该工作。如果它不起作用请在响应中添加一个空的json,因为我已在附加的屏幕截图中标记。我相信您的OPTIONS方法响应中没有添加任何默认响应标头(在方法响应中)。请参考截图

enter image description here

答案 1 :(得分:4)

从左侧菜单中创建一个新模型,您将其称为,并且该模型有效

empty model

答案 2 :(得分:4)

我在API Gateway + Lambda上遇到了CORS问题,以上答案并没有帮助我,但我发现我需要在我的API中的响应代码中添加一些标头信息。

我需要添加res.statusCode和两个标头。

// GET
// get all myModel
app.get('/models/', (req, res) => {
  const query = 'SELECT * FROM MyTable'
  pool.query(query, (err, results, fields) => {
    //...

    const models = [...results]
    const response = {
      data: models,
      message: 'All models successfully retrieved.',
    }
    //****** needed to add the next 3 lines
    res.statusCode = 200;
    res.setHeader('content-type', 'application/json');
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.send(response)
  })
})

答案 3 :(得分:0)

2020年的答案:如今,在仪表板上创建API时有一个称为HTTP API的选项。对于这种类型,我发现CORS配置要容易得多。如果您具有这种类型的有效API,只需在侧栏中的“开发”下单击“ CORS”,然后在Access-Control-Allow-Origin下添加“ *”。