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 - процесс авторизации немного отличается (нет необходимости в "Хосте").
1 ответ
Host:
заголовок заполняется и анализируется с заданного URL-адреса самим JS XHR при его выполнении, так же как и с curl
например,
curl -v -X POST http://example.org/foo
... автоматически добавит заголовок Host: example.org
...
Для AWS вам все равно нужно добавить его в canonical_headers
хотя список для подписи (и все строчные), как описано в вашем связанном примере. Эта часть не имеет ничего общего с установлением соединения.