AWS API使用Javascript签署了POST请求

时间:2015-02-04 16:42:23

标签: javascript amazon-web-services http-headers xmlhttprequest amazon-kinesis

我想做的事情: 最终:我想从浏览器扩展程序(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存储桶 - 自动化过程略有不同(不需要'主机')。

1 个答案:

答案 0 :(得分:1)

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

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

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

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