Подтвердить что ты не робот

AWS API подписал запрос POST с Javascript

Что я пытаюсь сделать: В конечном счете: я хочу заполнить поток AWS Kinesis из расширения браузера (Safari, Chrome). Мне нужно отправить запрос на AWS, используя процесс подписи (v4); это включает настройку заголовков и их шифрование (на удаленном сервере с секретным ключом aws), чтобы окончательно присоединиться к этим запросам.

Amazon запрашивает заголовок "Host" для явного определения... Однако Javascript строго запрещает его установку (и множество других, по уважительным причинам)

Мне что-то не хватает - как я могу это сделать?

Источники: http://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html - пример находится на Python, но он показывает, как серверная сторона намерена использовать заголовок Host

Примечания: в настоящее время я использую POST; в примерах комментариев, описывающих строку GET и запроса, упоминается также "Хост": он должен существовать как заголовок в запросе

также: используя подобную настройку, мне удалось загрузить файл с клиента непосредственно в ведро S3 - процесс авторизации немного отличается (нет требования для "Host" ).

4b9b3361

Ответ 1

Заголовок Host: заполняется и анализируется из заданного URL самого JS XHR при его выполнении, как и в случае с curl, например.

curl -v -X POST http://example.org/foo

... автоматически добавит заголовок Host: example.org...

Для AWS вам все равно нужно добавить его в список canonical_headers для подписания (и во всех строчных), как описано в приведенном примере. Эта часть не имеет ничего общего с установлением соединения.