Google Cloud Storage签名URL PUT Content-MD5

时间:2018-07-10 08:27:00

标签: upload google-cloud-storage pre-signed-url s

我正在尝试创建GCS签名的URL:https://cloud.google.com/storage/docs/access-control/create-signed-urls-program#signing-language

我想让我的客户直接上传到GCS。但是,我遇到了经典的SignatureDoesNotMatch错误。我认为这可能与Content-MD5摘要有关。

我对文档有疑问。在2b中,它说您可以添加MD5摘要。在下面的示例中,摘要看起来可能是base64编码的或类似的内容,但是指令中没有提及对摘要的编码。有人对此有经验吗?

编辑:在最近的运行中,我停止使用MD5摘要,并且一切正常。

1 个答案:

答案 0 :(得分:2)

您猜对了,MD5摘要必须使用base64编码。

在创建带有MD5摘要的签名URL时,您的PUT请求 必须 包含一个Content-MD5标头(指定为{{3 }}。

引用标准

Content-MD5   = "Content-MD5" ":" md5-digest
md5-digest    = <base64 of 128 bit MD5 digest as per RFC 1864>
  

MD5摘要是根据实体主体的内容计算的,   包括已应用的任何内容编码,但不包括   应用于邮件正文的任何​​传输编码。

签名中的MD5摘要是上面的md5-digest(因此为base64)。

此外,这仅适用于here(不适用于POST或可恢复的上传)。如上所述,在使用内容编码(Content-Encoding: gzip)时应格外小心。