1

我正在尝试做的事情:最终:我想从浏览器扩展(Safari、Chrome)填充 AWS Kinesis 流。我需要使用签名过程 (v4) 将请求发送到 AWS;这涉及设置标头并加密它们(在具有 aws 密钥的远程服务器上)以最终将它们加入请求。

亚马逊要求明确定义标头“主机”......但是 Javascript 严格禁止设置它(以及其他一些,有充分的理由)

我一定是错过了什么——我该怎么做?

来源: http ://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html - 该示例使用 Python,但它显示了他们打算如何在服务器端使用 Host 标头

注意:我目前正在使用 POST;描述 GET 和查询字符串的示例注释也提到了“主机”:它必须作为请求中的标头存在

另外:使用类似的设置,我设法将文件从客户端直接上传到 S3 存储桶——自动化过程略有不同(不需要“主机”)。

4

1 回答 1

1

Host:您执行时,JS XHR 本身会从给定的 URL 填充和解析标头,与 with 相同curl,例如

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

...将自动添加标题Host: example.org...

对于 AWS,您仍然需要将其添加到canonical_headers签名列表中(并且全部小写),如链接示例中所述。不过,这部分与实际建立连接无关。

于 2015-02-04T18:32:59.957 回答