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