当签名有“+”符号时禁止使用Amazon S3 Python S3Boto 403

2024-09-28 15:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是DjangoS3Boto,每当签名中有'+'符号,我就会得到一个403 Forbidden。如果签名中没有'+'符号,我就可以获得资源。这里怎么了?在

更新:

回购在:https://github.com/boto/boto

相关文件包括:

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

注意: 我对Python很陌生。我试着修改代码,但还是不能正确地完成编码。在


Tags: 文件djangopyhttpsgithubcoms3符号
3条回答

我刚刚承诺了我希望能在博图解决这个问题。见https://github.com/boto/boto/commit/a01a5d1a1e88f79ed5db52639d3674d9eb5e45dc。如果这能解决问题,请告诉我。在

简而言之,问题不在S3Boto中,而是在url后面发生的对“unquote”的调用中。在

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

Inconsistent SignatureDoesNotMatch Amazon S3 with django-pipeline, s3boto and storages

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

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

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

真的应该是

^{pr2}$

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

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

为了修复代码,我将添加一个URLEncoding函数,它在其中生成URL查询字符串。在

相关问题 更多 >