取消选中后,Google云端存储公共链接不会失效

问题描述 投票:4回答:3

我正在使用Google云端存储来上传图片。我现在正在从云控制台进行测试。在我上传图片后,如果我检查公开共享复选框以获取公共链接,我(显然)得到一个可公开访问的网址,即:https://storage.googleapis.com/bucket_name/pictureName

然后,如果我取消选中“公开共享”复选框,则会发出请求

Request URL:https://clients6.google.com/storage/v1_internal/b/bucketName/o/pictureName.jpg/acl/allUsers?key=AIzaSyCI-yuie5UVOi0DjtiCwWBwQ1djkiuo1g
Request Method:DELETE

该请求进展顺利,但公共网址仍可公开访问。我认为它有效一段时间,但一小时后仍然可用。那么,删除公共网址的正确方法是什么?我公开后如何限制对存储文件的访问?

google-app-engine google-cloud-storage
3个回答
5
投票

请参阅cache control and consistency上的文档。特别是:

注意:如果未指定缓存生存期,则可以缓存最多60分钟的可公开访问的对象。

所以我猜这是按预期工作的,你的对象是缓存的。你试过等一会儿吗?


2
投票

Sharing your data publicly中,它表明有两种方法可以公开停止共享对象。

  1. 如您所述,取消选中“公共共享”下的复选框。
  2. 编辑对象权限并删除ID为allUsers的条目。

您仍然能够公开访问该对象的原因确实是因为@jterrace提到的缓存。引用的Cache control and consistency文章解释了这种最终一致性的影响。

可以通过公开共享对象并在之后立即取消共享来测试此行为。在大多数情况下,对象将在缓存持续时间内公开访问。可以通过指定Cache-Control标头(例如max-age)来缩短此持续时间。


0
投票

当你分享公共网址就像https://storage.googleapis.com/bucket_name/pictureName

如果您删除该文件或取消选中“公开共享”复选框,则该文件最长可达60分钟,这是Google云中的默认缓存时间,

要避免问题需要传递像https://storage.googleapis.com/bucket_name/pictureName?avoidCache=1这样的Query参数

每次在查询字符串中传递随机数。

© www.soinside.com 2019 - 2024. All rights reserved.