Невозможно включить функции CORS для API-шлюза

я получил

enter image description here

При попытке включить CORS в API Gateway, почему это так и как я могу это решить? Эти функции развертываются с использованием AWS SAM. Но я замечаю, что если я создаю свои собственные API-интерфейсы через AWS Console, это тоже произойдет

Ошибки выглядят так:

  • Недопустимое имя модели указано application/json = Empty
  • указан неверный код состояния ответа

Я обнаружил, что мне, похоже, нужно добавить "пустую" модель ответа самостоятельно?


Теперь я получаю

Добавить Access-Control-Allow-Origin Integration Response Header Сопоставление с методом POST (указан неверный код состояния ответа)

Как это разрешить?

Ответы

Ответ 1

Сначала выберите ваш корневой ресурс и выберите "Включить CORS". Это позволит CORS для всех методов. В идеале это должно работать. Если это не помогло, пожалуйста, добавьте пустой json в ответ, как я отметил на скриншоте. Я полагаю, что в ответе метода OPTIONS (в методе Response) не добавлен заголовок ответа по умолчанию. Пожалуйста, смотрите скриншот

enter image description here

Ответ 2

Создайте новую модель из левого меню, которую вы назовете Пусто, и она работает

empty model

Ответ 3

У меня была проблема CORS с API Gateway + Lambda, и приведенные выше ответы мне не помогли, но я понял, что мне нужно добавить некоторую информацию заголовков в мой код ответа в моем 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)
  })
})