您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

签名不一致DoesNotMatch Amazon S3与django-pipeline,s3boto和存储

签名不一致DoesNotMatch Amazon S3与django-pipeline,s3boto和存储

我也发生了……花了几个小时才找到,但最终我发现了。事实证明,如果正确的签名是:

ssCNsAOxLf5vA80ldAI3M0CU2%2Bw =

然后,AWS将不接受:

ssCNsAOxLf5vA80ldAI3M0CU2 + w =

唯一的区别是%2B转换为“ +”。

S3BotoStorage实际上可以正确产生它,但是编码发生在url方法return unquote(final_url))的最后一行中的CachedFilesMixin上。为了解决这个问题,我派生了一个新的CachedFilesMixin来撤消“损坏”(我应该提一下,我不知道为什么这个取消引号最初存在,因此撤消它可能会导致其他问题)

class MyCachedFilesMixin(CachedFilesMixin):
def url(self, *a, **kw):
    s = super(MyCachedFilesMixin, self).url(*a, **kw)
    if isinstance(s, unicode):
        s = s.encode('utf-8', 'ignore')
    scheme, netloc, path, qs, anchor = urlparse.urlsplit(s)
    path = urllib.quote(path, '/%')
    qs = urllib.quote_plus(qs, ':&=')
    return urlparse.urlunsplit((scheme, netloc, path, qs, anchor))

希望这可以帮助…

Go 2022/1/1 18:35:24 有342人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶