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

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

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

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

ssCNsAOxLf5vA80ldAI3M0CU2%2Bw =

然后,AWS将不接受:

ssCNsAOxLf5vA80ldAI3M0CU2 + w =

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

S3BotoStorage实际上可以正确产生它,但是编码发生在url方法(

returnunquote(final_url)
)的最后一行中的CachedFilesMixin上。为了解决这个问题,我派生了一个新的CachedFilesMixin来撤消“损坏”(我应该提一下,我不知道为什么这个取消引号最初存在,因此撤消它可能会导致其他问题)

class MyCachedFilesMixin(CachedFilesMixin):def url(self, *a, **kw):    s = super(MyCachedFilesMixin, self).url(*a, **kw)    if isinstance(s, unipre):        s = s.enpre('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))

希望这可以帮助…



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5647387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存