如何获得Amazon Signature 4预签名URL以使用Ajax?

时间:2015-05-06 01:11:39

标签: ajax amazon-s3 pre-signed-url

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

如果我将其粘贴到浏览器中或使用hurl.it

,它可以正常工作

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

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

我在hurl.it尝试了它,它也失败了。对于Amazon Signature 4来说,Ajax添加的额外参数是一个显示停止。

我会将它传递给我的服务器进行签名,但遗憾的是Ajax是事实,所以AFAIK不可能提前指定回调参数。

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

因此预先签署的网址不是问题。 据我所知,标题也不是。 它似乎希望所有查询参数与我签名的匹配。

我已经在这里呆了两天了,到目前为止我已经很近了。

有经验的s3 / ajax用户的任何见解都会非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

那很有效。

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

但是使用$ .get()并且它会成功。

希望这可以拯救别人很多悲伤。