跨源不起作用 - 谷歌云

jar*_*zek 8 json google-cloud-storage

我有一个问题,我已经寻找信息几个小时了。我希望阻止对我的存储桶中的对象的访问,这些对象只能从我的网站查看,为此我根据谷歌云存储的文档配置了跨源。

我有这个网址:https://storage.googleapis.com/cros-test/480_intro%20v2_2.mp4,它有权公开,同样的网址我希望它只能从我的网络 example.com 中可见

[
    {
      "origin": ["https://example.com"],
      "responseHeader": ["*"],
      "method": ["GET", "HEAD", "DELETE"],
      "maxAgeSeconds": 3600
    }
]
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用,它仍然对每个人都可见

Joh*_*ley 3

简单的回答是 CORS 不向 Google Cloud Storage (GCS) 提供授权。换句话说,您无法使用 CORS 保护 GCS 存储桶和对象。

\n

CORS 是浏览器在浏览器上强制执行的安全策略。CORS 代表跨源资源共享。CORS 的目的是通知浏览器是否可以从站点 A 加载/访问站点 B 上的资源。CORS 的目标是保护最终用户,而不是保护您的内容。

\n

如果用户直接访问您的 URL(将 URL 放在地址栏中),则不会发生跨源。你的水桶就是起源。

\n

当其他人在他们的网站页面中使用您的对象 URL 来下载对象时,CORS 就会发挥作用。然而,CORS 是浏览器自愿的,这意味着有些工具会忽略 CORS 策略(例如curl)。通常,浏览器会将Origin标头添加到 GCS 然后分析的请求中。这可以是伪造的、伪造的或只是未指定。

\n

例如,GCS CORS 的一个经常被忽视的问题:

\n
\n

注意:CORS 配置仅影响对 XML API 端点的请求。\nJSON API 端点允许 CORS 请求,无论目标存储桶上的 CORS 设置如何。\n 对端点 storage.cloud.google.com 的请求\n不允许 CORS 请求。

\n

storage.googleapis.com/your-bucket \xe2\xac\x85 不会有标头

\n

your-bucket.storage.googleapis.com \xe2\xac\x85 将具有 cors 标头

\n
\n

这份 Google文档将帮助解释 CORS 如何与 GCS 配合使用。

\n