当前位置: 首页 > 面试题库 >

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

阎星河
2023-03-14
问题内容

我有django-
pipeline和s3boto一起编译的2个文件:master.css和master.js。在我的存储桶中,它们设置为“公开”。但是,当我访问它们时,有时会提供master.css,有时会因SignatureDoesNotMatch而出错。与master.js相同。在Chrome上不会发生这种情况。我可能会缺少什么?

编辑 :现在它也发生在Chrome上。


问题答案:

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

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))

希望这可以帮助…



 类似资料:
  • Pipeline 是一个Django的资源包装库,提供CSS和JavaScript的串联和压缩,内置的JavaScript模板支持,以及可选的的数据URI图像和字体嵌入。

  • 问题内容: 因此,我试图用Java生成ECDSAwithHA256签名,为此,我使用的是BouncyCastle提供程序。曲线是secp521r1。 要初始化我正在使用的签名者: 并签署我正在使用 现在唯一的问题是,当我运行代码时,我得到的签名长度在137到139字节之间。但我希望得到的字节数始终相同。有人知道我必须更改什么,即我的签名长度始终相同,但仍然是标准的签名格式吗? 问题答案: 通常,J

  • 所以我尝试用Java生成一个ECDSAwithHA256签名,为此,我使用了BouncyCastle提供程序。曲线是secp521r1。 要初始化我正在使用的签名者:: 为了签名,我使用 现在唯一的问题是,当我运行代码时,我得到的签名长度在137到139字节之间。但是我希望得到的字节数总是相同的。有人知道我必须改变什么吗,我总是有相同的签名长度,但仍然是标准化的签名格式?

  • 问题内容: 使用Jenkins 2 Pipeline插件,它具有一项有用的功能,可以快速概述管道阶段和步骤状态,包括记录输出。 但是,如果您使用“ Shell脚本”(sh)步骤,似乎没有一种用有用的名称标记该脚本的方法,因此显示内容仅显示一长串“ ShellScript”。 如何分配有用的名称,或者如何使用其他步骤来达到相同的效果? 问题答案: 2019年2月更新 : 根据gertvdijk在下面

  • 如果我按yes,几秒钟后就会显示相同的错误。我尝试手动删除该应用程序,但该应用程序已从我的手机中删除。

  • 我正在尝试运行我的项目,但我收到此错误: 安装失败,消息为failed to finalize session:INSTALL_failed_INVALID_APK:/data/app/vmdl1841863905.tmp/11_app-debug signatures are inconsistencial。通过卸载现有版本的apk(如果存在),然后重新安装,可以解决此问题。 警告:卸载将删除应