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

时间:2016-06-21 13:12:54

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

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

  

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

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

答案 1 :(得分:2)

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

  1. 取消选中公开分享下的复选框,如您所述。
  2. 修改对象权限并删除ID为Dim i,x,a,ws i = InputBox("Entrer un caractère ou une phrase pour obtenir son Code Unicode Correspondant !","test","éè@!%") If i <> "" Then For x = 1 To Len(i) If x <> Len(i) Then a = a & "ChrW(" & AscW(Mid(i,x,1)) & ")" & "&" Else a = a & "ChrW(" & AscW(Mid(i,x,1)) & ")" End if Next Inputbox "Le Code Unicode Correspondant pour " & qq(i) & " est:",,a End If wscript.sleep 5000 set ws = CreateObject("WScript.shell") ws.SendKeys qq(i) '****************************************************************** Function qq(strIn) qq = Chr(34) & strIn & Chr(34) End Function '****************************************************************** 的条目。
  3. 您仍然可以公开访问该对象的原因确实是因为@jterrace提到的缓存。引用的Cache control and consistency文章解释了这种最终一致性的影响。

    可以通过公开共享对象并在之后立即取消共享来测试此行为。在大多数情况下,对象将在缓存持续时间内公开访问。可以通过指定allUsers标题{}等来缩短此持续时间。

答案 2 :(得分:0)

当您共享公开网址时,就像https://storage.googleapis.com/bucket_name/pictureName

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

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

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