【问题标题】:Google Cloud Storage public link does not become invalid when unchecking取消勾选时谷歌云存储公共链接不会失效
【发布时间】:2016-06-21 13:12:53
【问题描述】:

我正在使用 Google Cloud Storage 上传图片。我现在正在从云控制台对其进行测试。 在我上传图片后,如果我选中“公开分享”复选框以获取公共链接,我(显然)会得到一个可公开访问的 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

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

【问题讨论】:

    标签: google-app-engine google-cloud-storage


    【解决方案1】:

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

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

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

    【讨论】:

    • 确实过了一段时间就无法使用了。
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

      当您的公开分享网址为https://storage.googleapis.com/bucket_name/pictureName

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-10
        • 2013-08-24
        • 1970-01-01
        相关资源
        最近更新 更多