【问题标题】:How can I make a Google Cloud Storage object publicly visible while uploading it?如何在上传 Google Cloud Storage 对象时公开显示它?
【发布时间】:2019-04-11 03:07:41
【问题描述】:

我有一个使用签名 URL 将对象上传到 Google Cloud Storage 的应用程序,我想知道是否可以在签名/上传步骤中公开对象。

我知道可以通过在其存储桶上设置策略或使用客户端库/在上传后发出 REST 请求来使对象公开可见,但为了尽量减少对我的工作流程的影响,我会喜欢一口气做完。这可能吗?如果可以做到,我假设它是通过在签署 URL 或使用签名 URL 发出 REST 请求时设置标头,但我无法找到涵盖此内容的文档。

更新:

我刚刚找到the Extension/Custom Headers section of the XML API docs,它声称可以使用x-goog-acl 标头(例如x-goog-acl: public-read)来实现。不幸的是,这不起作用。在签名 URL 和上传文件时设置标头后,该对象不公开可见。

【问题讨论】:

    标签: rest google-cloud-platform google-cloud-storage google-cloud-functions


    【解决方案1】:

    引用Cloud Storage documenation regarding Signed URLs

    在为标头指定 name:value 对时,请记住以下几点:

    • 删除标题名称后出现的冒号周围的所有空格。

    例如,使用自定义标头x-goog-acl: private而不删除冒号后的空格会返回403 Forbidden错误,因为您计算的请求签名与Google计算的签名不匹配。

    因此解决方案可以将标头值设置为x-goog-acl:public-read 而不是x-goog-acl: public-read

    【讨论】:

    • 感谢您指出这一点。这已经在 URL 签名函数中完成,并且在请求端指定不带空格的标头不会改变任何内容。
    猜你喜欢
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2016-01-09
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    相关资源
    最近更新 更多