如何设置正确的ACL以允许来自域的用户仅用于CORS

时间:2016-10-06 18:59:01

标签: google-cloud-storage

我使用云存储来提供许多JSON文件,用于跨域资源共享;但我发现我必须设置ACL以允许所有用户可读吗?

https://cloud.google.com/storage/docs/cross-origin

到目前为止,我找到了两种访问这些资源的方法:

  1. https:// storage.googleapis.com /my-bucket/my-full-keyname.json
  2. https:// storage.cloud.google.com /my-bucket/my-full-keyname.json(基于Cookie,将重定向到accounts.google.com进行身份验证,并重定向到xxx.googleusercontent.com / ...?看起来像是已签名的网址;但回复并不具备CORS标题)
  3. 在存储桶上,我设置了适当的CORS并允许来自Origin的GET请求:http:// www.softwareishard.com

    http://www.softwareishard.com/har/viewer/?path=https://storage.googleapis.com/my-bucket/my-full-keyname.json

    但问题是我发现它可以工作的唯一方法是我设置所有可读的ACL;但是有些文件是保密的,我不想要全世界的可读性;

    通过https:// storage.cloud.google.com / my-bucket/my-full-keyname.json进行第二类网址访问我可以像gsutil acl ch -g my-domain.com:r gs://my-bucket/my-full-keyname.json一样设置ACL my-domain.com是Google Apps上的托管域名,因此它可以限制访问经过身份验证的my-domain .com仅限用户。但https:// storage.cloud.google.com的问题是它不支持上面的CORS。尝试加载http:// www.softwareishard.com /har/viewer/?path=https:// storage.googleapis.com/my-bucket/my-full-keyname.json我可以在CORS请求中看到网络面板中的302重定向,它会重定向到accounts.google.com进行身份验证,但har-viewer无法加载。

    问题是存储.googleapis.com可以通过CORS访问,但只有当ACL设置为All:Readable时,全世界都是匿名可读的;

    使用storage.cloud.google.com它基于cookie,可以将ACL设置为仅对经过身份验证的@ my-domain.com用户可读,而不是使用全球匿名读取;但此URL是重定向到xxxx.googleusercontent.com/path/to/my-bucket/my-objkeyname?qk=some-long-signed-string并且不支持CORS。

    有没有建议如何使用CORS设计ACL?感谢

1 个答案:

答案 0 :(得分:0)

问题是存储.googleapis.com可以通过CORS访问,但只有当ACL设置为All:Readable时,全世界都是匿名可读的;

使用storage.cloud.google.com它是基于cookie的,可以将ACL设置为仅对经过身份验证的@ my-domain.com用户可读,而不是使用全球匿名读取;但此URL是重定向到xxxx.googleusercontent.com/path/to/my-bucket/my-objkeyname?qk=some-long-signed-string,并且不支持CORS。

有没有建议如何使用CORS设计ACL?感谢