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