AWS Lambda & API Gateway - 500 от браузера, но не от скручивания - PullRequest
0 голосов
/ 28 августа 2018

Я борюсь с AWS Lambda и API Gateway. Я могу нормально вызывать API из curl и Почтальона, но не из браузера.

Это работает

curl --header "Content-Type: application/json" \
     --request POST \
     --data '{ "baseId" : "app0ZJgZxm6LC8rBB", "tableName": "Stories", "action": "select" }' \
     'https://gpzy1rrcwg.execute-api.us-east-1.amazonaws.com/Prod/'

Это НЕ работает ( ссылка для запуска на CodePen )

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){
        $.ajax({
            type: 'POST',
            url: 'https://gpzy1rrcwg.execute-api.us-east-1.amazonaws.com/Prod/',
            dataType: 'json',
            contentType: 'application/json',
            data: JSON.stringify({
                "baseId" : "app0ZJgZxm6LC8rBB",
                "tableName": "Stories",
                "action": "select"
            }),
            success: function (response) {
                console.log(response)
                alert('it worked')
            },
            error: function (err) {
                console.log(err)
                alert('it failed')
            }
        });
    });
});
</script>
</head>
<body>

<button>Test</button>

</body>
</html>

ссылка для запуска на CodePen

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Что такое режим интеграции между шлюзом API и лямбда - Это на основе прокси или более ранней версии?

Включили ли вы CORS в методе API-шлюза? https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

0 голосов
/ 28 августа 2018

Вероятно, это проблема CORS, как сказал @Rup в комментариях. Из документации JQuery по опции contentType для .ajax () вы видите это:

Для междоменных запросов установка типа содержимого, отличного от application / x-www-form-urlencoded, multipart / form-data или text / plain, заставит браузер отправлять предварительный запрос OPTIONS на сервер

При просмотре вкладки сети в вашем браузере вы увидите, что она отправляет запрос OPTION. Фактически, просто удалив параметр contentType, ваш код будет работать так, как ожидается.

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