Я создал микросервис в Go, который удаляет данные из тела запроса и сохраняет их в DynamoDB. REST URL работает практически везде, но, похоже, браузер. Когда я запускаю выборку в браузере, я получаю 403 без ответа. Я могу получить ответ 200 с помощью сценария Node, команды curl или даже при использовании такого инструмента, как repl.it, для тестирования. Однако по какой-то причине он никогда не хочет работать в веб-приложении или на консоли разработчика (я использую Chrome). Я пытался выполнить запрос на нескольких веб-сайтах, включая веб-приложение, которое я создаю, чтобы запустить его, и все они не дали одинакового результата 403.
В API Gateway для параметра Авторизация установлено значение «нет», а для параметра «Ключ API» установлено значение «Не требуется», поэтому я испытываю большие затруднения, когда вижу, как получить 403 на моей конечной точке. На веб-интерфейсе мой запрос на выборку выглядит примерно так: Сработавшая команда curl также находится ниже. Я следил за этим постом, прежде чем создавать это, и хотя он похож, этот человек действительно получает ответ, в то время как мой не дает мне ответа. Он работает как скрипт, но не работает в браузере. Как это работает где-нибудь, кроме внутри браузера? Если бы я мог просто получить некоторую информацию о том, что происходит, это было бы здорово. Если бы я мог получить некоторую информацию о том, как это можно решить, это было бы ОЧЕНЬ круто.
JS
fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
data: JSON.stringify({
Email: 'example@test.com'
}),
})
.then(res => res.json())
.then(json => console.log(json))
.catch(e => console.error(e))
локон
curl -H 'application/json' -d '{ "Email": "example@test.com" }' $URL
ОБНОВЛЕНИЕ: я обнаружил, что я ошибся. Это была проблема CORS. Я не обрабатывал метод OPTIONS, который был отправлен как предварительный запрос перед моим запросом POST. Метод OPTIONS отправляется автоматически в браузере, но не отправляется, если вы выполняете код где-либо еще.