json - 跨域不起作用 - 谷歌云
问题描述
我有一个问题,我一直在寻找信息几个小时。我希望阻止访问我的存储桶中的对象,这些对象只能从我的网站上查看,为此我已经根据谷歌云存储的文档配置了跨域。
我有这个网址:https://storage.googleapis.com/cros-test/480_intro%20v2_2.mp4,它有权公开,我希望它只在我的网络 example.com 中可见
[
{
"origin": ["https://example.com"],
"responseHeader": ["*"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]
但它对我不起作用,它仍然对所有人可见
解决方案
快速回答是 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 配合使用。
推荐阅读
- php - XAMPP 错误:Apache 意外关闭
- sql-server - SQL Server Management Studio 中的 SQL 查询出现问题。在具有远程访问权限的服务器上工作
- python - 在许多不同的类中编写 map 和 reduce?
- python - 有没有办法在 Altair boxplot 中格式化工具提示值
- prolog - 查找列表中唯一元素的数量
- php - 如何将 PHP 数组发送到电子邮件/短信并维护数组中文本的格式?
- java - 类型不匹配,java spring & hibernate,无法将 mySQL 数据库的数据从 Object 转换为 String
- laravel - PhpStorm 找不到 findOrFail() 方法
- python - 迭代 Dataframe 列以绘制直方图
- python - 提交后注册表单刷新,而不是在 django 中发送 post 请求