无法为API网关功能启用CORS

Jie*_*eng 13 amazon-web-services cors aws-api-gateway

我明白了

在此输入图像描述

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

错误看起来像:

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

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


现在,我明白了

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

我该如何解决这个问题?

Vij*_*han 15

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

在此输入图像描述

  • 这修复了 4 个标头中的 3 个,但“将 Access-Control-Allow-Origin 集成响应标头映射添加到 GET 方法”仍然失败:( (9认同)
  • 我按照您所做的操作,发现虽然在开发工具中,我将选项视为 HTTP200,但我仍然收到“请求的资源上不存在“Access-Control-Allow-Origin”标头。” (3认同)

Ju6*_*aut 7

我在 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)
  })
})
Run Code Online (Sandbox Code Playgroud)


MrL*_*uje 6

从左侧菜单创建一个新模型,您将其称为Empty,它可以正常工作

空模型

  • 这是公认答案中缺少的提示! (4认同)
  • 这解决了问题,并且是问题的正确解决方案。 (2认同)