我想做的事情: 最终:我想从浏览器扩展程序(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和查询字符串的注释提到了" Host"同样:它必须作为请求中的标题存在
另外:使用类似的设置,我设法将客户端上传的文件直接上传到S3存储桶 - 自动化过程略有不同(不需要'主机')。
答案 0 :(得分:1)
执行时,JS XHR本身会从给定的URL填充并解析Host:
标头,与curl
相同,例如
curl -v -X POST http://example.org/foo
...会自动添加标题Host: example.org
...
对于AWS,您仍然需要将其添加到canonical_headers
列表中以进行签名(并且全部小写),如链接示例中所述。该部分与实际建立连接无关。