6

我正在使用Django并且S3Boto每当签名中有'+'签名时,我都会得到一个403 Forbidden. 如果'+'签名中没有签名,我就可以得到资源。这里有什么问题?

更新:

回购位于:https ://github.com/boto/boto

相关文件是:

boto/utils.py
boto/s3/connection.py

注意: 我对 Python 很陌生。我尝试修改代码,但仍然无法正确完成编码。

4

3 回答 3

3

我的时间有点短(因为现在是凌晨 1:30),所以很遗憾我还没有给你的代码示例,但我相信这是因为应该对 URL 中的值 + 进行编码。所以从github,你的网址......

https://s3.amazonaws.com/dragonflysco/static/js/plugins/blockui.js?Signature=+tahbTacs5Vkzt5jQ+hZULzGPhE=&Expires=1345019173&AWSAccessKeyId=AKIAJNCPYIZVZXKOPCHA

真的应该

https://s3.amazonaws.com/dragonflysco/static/js/plugins/blockui.js?Signature=%2BtahbTacs5Vkzt5jQ+hZULzGPhE=&Expires=1345019173&AWSAccessKeyId=AKIAJNCPYIZVZXKOPCHA

(注意:我用 %2B 替换了 +)

http://www.w3schools.com/tags/ref_urlencode.asp

为了修复代码,我将添加一个 URLEncoding 函数来构建 URL 查询字符串。

于 2012-08-22T08:35:09.857 回答
1

简而言之,问题不在于 S3Boto,而在于稍后在 url 上发生的一些“取消引用”调用。

我在这里回答了一个类似的问题:

不一致的 SignatureDoesNotMatch Amazon S3 与 django-pipeline、s3boto 和存储

请在那里查看我的解决方案。

于 2012-09-05T08:39:29.697 回答
0

我刚刚提交了我希望在 boto 中解决此问题的方法。请参阅https://github.com/boto/boto/commit/a01a5d1a1e88f79ed5db52639d3674d9eb5e45dc。请让我知道这是否可以解决问题。

于 2012-08-31T16:05:26.327 回答