AWS Serverless API Request - PullRequest
       32

AWS Serverless API Request

0 голосов
/ 03 октября 2018

Всякий раз, когда я начинаю использовать авторизатор AWS_IAM в своей функции, мой запрос API GET, который делается из веб-клиента, получает No 'Access-Control-Allow-Origin' header is present on the requested resource., и я получаю код состояния 403.Когда я удаляю авторизатор aws_iam, запрос API, сделанный через тот же веб-клиент, завершается успешно.Так что я уверен, что на самом деле это не ошибка CORS, так как я дважды проверил, что в моем API включены cors.Я не уверен, что использую AWS Javascript SDK неправильно или не генерирую правильные роли для AWS_IAM в моей конфигурации serverless.yml.

Когда я запускаю запрос от почтальона с моим личным доступомключи от AWS, запрос выполняется успешно.Когда я console.log ключи от AWS.config.credentials и использую их в почтальоне, запрос получает недопустимое сообщение об ошибке токена.Может быть, я не сгенерировал правильную роль для своего федеративного пула удостоверений?

Я использую aws4 на внешнем интерфейсе, чтобы подписать запрос, и использую axios, чтобы сделать запрос.

Есть идеи?

1 Ответ

0 голосов
/ 03 октября 2018

Axios сделает запрос перед полетом.Это тип OPTIONS и ожидает ответа 200, прежде чем он сделает запрос GET.Также необходимо вернуть заголовок CORS:

Access-Control-Allow-Origin: *

Почтальон не будет делать тот же вызов автоматически, но вы можете использовать его для проверки этого запроса.Убедитесь, что ваш API принимает методы запроса OPTIONS для этого маршрута и что он возвращает пустой ответ 200 с заголовком CORS, и я думаю, что вам будет хорошо.

AFAIK, запрос OPTIONSне должен быть аутентифицирован.Просто дай зеленый свет.Может случиться так, что ваш клиент совершает вызовы к этой конечной точке в виде запросов OPTIONS, которые проходят аутентификацию, добавляя второй уровень путаницы, или вам может потребоваться добавить Access-Control-Allow-Headers, чтобы разрешить заголовок типа Authorisation, если AWSиспользуя один.

Трудно дать больше информации без отладки, но я бы начал с запроса OPTIONS.

...