У меня есть лямбда, написанная на Kotlin с Serverless и CORS просто не работает. Я чувствую, что перепробовал все. Я развернул Node Lambda с идентичными sls.sh
командой и файлами yaml. Функция выглядит следующим образом:
hello:
handler: handler.hello
events:
- http:
path: hello
method: post
cors: true
Мои ответы выглядят так и в Node, и в Kotlin:
{
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*"
},
"body": "{\"id\": \"f9f76590-xxxx-xxxx-xxxx-9c8e99238f40\"}"
}
В случае с Node все это прекрасно работает. Я делаю fetch
вызов, подобный этому, и он работает (для краткости опущены разрешения Promise):
var makeRequest = function (data) {
fetch('https://{lambda URL}/hello', {
'headers': {
'content-type': 'application/json'
},
'body': JSON.stringify({ data }),
'method': 'POST'
})
}
В случае Kotlin я получаю эту ошибку CORS обратно
Доступизвлечение по 'https://{lambda URL} / hello' from origin 'http://127.0.0.1:8080' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '. Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.
Я пытаюсь «включить CORS» на панели шлюза API, но получаючто он уже включен:
И нажмите «Отправить», я получаю сообщение об ошибке (недействительный код состояния ответа)
При наведении курсора на значок ошибки появляется сообщение «Указан неверный код состояния ответа».
В разделе «Ответы шлюза» под каждым подпунктом (по умолчанию 4XX, по умолчанию 5XXX и т. Д.)установлены заголовки ответа. Это то же самое для моей ноды и котлинской лямбды.
На данный момент у меня совершенно нет идей.
Единственная потенциально странная вещь - это то, что я замечаю, что в моем запросе к ноду я вижуaccess-control-allow-origin: *
в заголовках ответа в сетевой панели браузера, но в Kotlin я его не вижу.