javascript - AWS API 使用 Javascript 签署 POST 请求

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

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

亚马逊请求显式定义 header “Host”... 然而,Javascript 严格禁止设置它(以及许多其他设置,有充分的理由)

我一定错过了一些东西——我该怎么做?

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

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

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

最佳答案

执行时,Host: header 将由 JS XHR 本身从给定的 URL 中填充和解析,与 curl 相同,例如

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

...将自动添加 header Host: example.org...

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

关于javascript - AWS API 使用 Javascript 签署 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326752/

相关文章:

javascript - 在 Sencha ExtJS 现代中定义启动图像和图标

javascript - 当这个相关的 div 标签达到 100% 时停止可拖动事件?

javascript - 占位符 - 用于文本区域输入

django - sudo apache2 stop 不起作用

amazon-web-services - Amazon Kinesis 数据流和 DynamoDB 流详细信息有什么区别

amazon-web-services - │ 错误 : Reference to undeclared resource

Github 页面、HTTP header

javascript - 传单问题 : making layergroup of polylines not clickable

url - 浏览器如何使用查询字符串缓存 301 重定向

dns - [i.][m.] HTTP 地址