【发布时间】:2017-11-26 02:16:41
【问题描述】:
我正在尝试通过 AJAX 从本地主机上的谷歌云存储中获取文件。我做了以下事情:
通过 gsutil 为我的存储桶设置 CORS:
gsutil cors set cors.json gs://my-project
cors.json 文件在哪里:
[
{
"origin": [
"*"
],
"responseHeader": ["Origin", "Accept", "X-Requested-With", "Authorization", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token"],
"method": [
"GET",
"OPTIONS"
],
"maxAgeSeconds": 1
}
]
我已经用gsutil cors get gs://my-project验证过了
然后,对于每个文件,我都在上传文件时通过 node.js 客户端库将其公开:
bucket.file(object.name).makePublic()
通过控制台和 gsutil:
gsutil -m acl set -R -a public-read gs://my-project
然后在我的 ajax 请求中,我还发送了标头:
$.ajax({
method: "GET",
url: "https://googleapis.com/storage/v1/b/my-project/o?delimiter=audio",
headers: {
'Access-Control-Allow-Origin': '*'
},
crossDomain: true,
}).done((data) => {
console.log(data)
})
我仍然得到一个 cors 错误:
对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:3000” 访问。
如何通过 CORS?
【问题讨论】:
标签: ajax cors cross-domain google-cloud-platform google-cloud-storage