首页 > 解决方案 > 跨域不起作用 - 谷歌云

问题描述

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

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

[
    {
      "origin": ["https://example.com"],
      "responseHeader": ["*"],
      "method": ["GET", "HEAD", "DELETE"],
      "maxAgeSeconds": 3600
    }
]

但它对我不起作用,它仍然对所有人可见

标签: jsongoogle-cloud-storage

解决方案


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

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

如果用户直接访问您的 URL(将 URL 放在地址栏中),则不会发生跨源。您的存储桶是原点。

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

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

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

storage.googleapis.com/your-bucket ⬅ 没有标题

your-bucket.storage.googleapis.com ⬅ 将有 cors 标头

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


推荐阅读