Как заставить мою функцию Go Lambda выдавать ответ при вызове ее в браузере? - PullRequest
1 голос
/ 05 мая 2019

Я создал микросервис в 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 отправляется автоматически в браузере, но не отправляется, если вы выполняете код где-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...