首页 > 解决方案 > 谷歌云存储不会将 CORS 标头添加到 OPTIONS 调用

问题描述

我们正在尝试从谷歌云存储中下载基本文件作为 XHR 工作。

已经使用带有 json 的 gsutil 为存储桶设置了 cors 设置

[{
  "origin": ["*"],
  "method": ["*"],
  "responseHeader": ["origin"],
  "maxAgeSeconds": 1800
}]

除 OPTIONS 外,它适用于所有方法。不幸的是,对于 XHR,浏览器似乎总是在执行 OPTIONS 来检查 cors 标头,因此会阻止下载。我还尝试将 JSON 中的方法显式设置为 OPTIONS,但这无济于事。

有谁知道为什么只有 OPTIONS 是关闭的?

编辑:为了验证,我通过邮递员发送请求。对资产的 GET 调用会产生 200 OK 响应,其中的标头包括

Access-Control-Allow-Origin → *
Access-Control-Expose-Headers → origin

但是当我向同一资产发送 OPTIONS 调用时,它仍然是 200 OK,但缺少所有 Access-Controll-* 标头。

标签: corsxmlhttprequestgoogle-cloud-storage

解决方案


我不确定属性“方法”是否允许使用通配符。在文档中,所有方法都明确写入:

"method": ["GET", "HEAD", "DELETE"]

您应该尝试列出所有方法,包括选项。


推荐阅读