Google Cloud Storage public link 取消勾选后不会失效

Google Cloud Storage public link does not become invalid when unchecking

我正在使用 Google 云存储上传图片。我现在正在从云控制台对其进行测试。 在我上传图片后,如果我选中共享 publicly 复选框以获得 public link,我(显然)会得到一个 publicly 可访问 url,即: 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

请求进行得很顺利,但是 public url 仍然 public 可以访问。我以为是一段时间有效,但是一小时后还是可用的。 那么,删除 public url 的正确方法是什么?如何在创建后限制对存储文件的访问 public?

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

Note: If you do not specify a cache lifetime, a publicly accessible object can be cached for up to 60 minutes.

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

Sharing your data publicly 中,显示有 2 种方法可以停止公开共享 object。

  1. 取消选中 公开共享 下的复选框,正如您已经提到的那样。
  2. 编辑 object 权限并删除 ID 为 allUsers 的条目。

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

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

当您公开分享 Url 就像 https://storage.googleapis.com/bucket_name/pictureName

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

为了避免问题需要传递查询参数,如 https://storage.googleapis.com/bucket_name/pictureName?avoidCache=1

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