0

我可以生成一个有效的预签名 URL 来列出 S3 存储桶的部分内容。

如果我将它粘贴到浏览器中或使用 hurl.it 效果很好

但是,在 jQuery Ajax GET 调用中,签名失败。

我在提琴手中查看了请求,它确实在请求中附加了一个参数,这可能是回调。

我在 hurl.it 中尝试过,它也失败了。对于 Amazon Signature 4 来说,Ajax 添加的额外参数似乎是一个阻碍。

我会将它传递给我的服务器进行签名,但不幸的是 Ajax 是事后的,所以 AFAIK 无法提前指定回调参数。

奇怪的是使用 C# SDK 生成一个预签名的 URL,这个额外的参数在 Ajax 中不是问题。但不幸的是,SDK 没有提供我所知道的用于生成预签名 URL 以列出存储桶内容的机制。只是为了得到一个对象。

所以预签名的 URL 不是问题。据我所知,标题也不是。似乎它希望所有查询参数都与我签署的内容相匹配。

我已经在这里待了将近 2 天,到目前为止我还很接近。

非常感谢有经验的 s3 / ajax 用户提供的任何见解。

谢谢!

4

1 回答 1

0

对于其他遭受这种耻辱的人来说,这是我的解决方案。

我正在使用“GET”类型的 $.ajax() 调用。额外的参数绝对是问题所在。

然后我记得 jQuery 中有一个 $.get() 函数。

那行得通。

因此,似乎 $.ajax() 会添加额外的参数,即使签名有效,Amazon Signature 4 presigned URL 也会失败。

但是使用 $.get() 就会成功。

希望这可以节省很多人的悲伤。

于 2015-05-06T02:41:01.890 回答