Всякий раз, когда я начинаю использовать авторизатор 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.info ключи из AWS.config.credentials и использую их в почтальоне, запрос получает сообщение об ошибке недопустимого токена. Может быть, я не сгенерировал правильную роль для своего пула федеративных удостоверений?
Я использую aws4 во внешнем интерфейсе, чтобы подписать запрос, и я использую axios для выполнения запроса.
Любые идеи?





Axios сделает предполетный запрос. Это тип OPTIONS, и он ожидает ответа 200, прежде чем сделает запрос GET. Также необходимо вернуть заголовок CORS:
Access-Control-Allow-Origin: *
Почтальон не будет делать тот же звонок автоматически, но вы можете использовать его для проверки этого запроса. Убедитесь, что ваш API принимает методы запроса OPTIONS для этого маршрута и возвращает пустой ответ 200 с заголовком CORS, и я думаю, вам будет хорошо.
AFAIK, запрос OPTIONS не требует аутентификации. Просто дайте зеленый свет. Может случиться так, что ваш клиент выполняет вызовы к этой конечной точке как запросы OPTIONS, которые проходят проверку подлинности, добавляя второй уровень путаницы, или вам может потребоваться добавить Access-Control-Allow-Headers, чтобы разрешить заголовок типа Authorisation, если AWS его использует.
Трудно предоставить дополнительную информацию без отладки, но я бы начал с запроса OPTIONS.
Хм. Какие заголовки вы отправляете для аутентификации через почтальона? Включены ли они в правило CORS для разрешенных заголовков? Или аутентификация не требуется для OPTIONS req?
Для запроса OPTIONS аутентификация не требуется.
Запрос OPTIONS, кажется, выполнен успешно с правильным ответом. Я начинаю полагать, что существует проблема с предоставлением моего AWS Federated Identity доступа к моему шлюзу API.