我正在使用Django
并且S3Boto
每当签名中有'+'
签名时,我都会得到一个403 Forbidden
. 如果'+'
签名中没有签名,我就可以得到资源。这里有什么问题?
更新:
回购位于:https ://github.com/boto/boto
相关文件是:
boto/utils.py
boto/s3/connection.py
注意: 我对 Python 很陌生。我尝试修改代码,但仍然无法正确完成编码。
我正在使用Django
并且S3Boto
每当签名中有'+'
签名时,我都会得到一个403 Forbidden
. 如果'+'
签名中没有签名,我就可以得到资源。这里有什么问题?
更新:
回购位于:https ://github.com/boto/boto
相关文件是:
boto/utils.py
boto/s3/connection.py
注意: 我对 Python 很陌生。我尝试修改代码,但仍然无法正确完成编码。
我的时间有点短(因为现在是凌晨 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 查询字符串。
简而言之,问题不在于 S3Boto,而在于稍后在 url 上发生的一些“取消引用”调用。
我在这里回答了一个类似的问题:
不一致的 SignatureDoesNotMatch Amazon S3 与 django-pipeline、s3boto 和存储
请在那里查看我的解决方案。
我刚刚提交了我希望在 boto 中解决此问题的方法。请参阅https://github.com/boto/boto/commit/a01a5d1a1e88f79ed5db52639d3674d9eb5e45dc。请让我知道这是否可以解决问题。