【问题标题】:How do I get Amazon Signature 4 presigned URL to work with Ajax?如何让 Amazon Signature 4 预签名 URL 与 Ajax 一起使用?
【发布时间】:2015-05-06 10:41:01
【问题描述】:

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

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

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

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

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

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

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

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

我已经在这里待了差不多 2 天了,我离现在这么近。

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    成功了。

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

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

    希望这可以减轻人们的痛苦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 2020-07-27
      • 1970-01-01
      • 2018-12-27
      • 2012-03-24
      • 2021-10-18
      • 1970-01-01
      • 2016-02-13
      相关资源
      最近更新 更多