上传时如何使Google Cloud Storage对象公开可见?

时间:2019-04-11 03:07:42

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

我有一个应用程序,该应用程序使用签名的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签名和上传文件时,设置标题后,该对象将不会公开显示。

1 个答案:

答案 0 :(得分: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