【发布时间】:2021-02-09 12:04:54
【问题描述】:
我正在尝试使用 getSignedURL 方法在使用 Firebase 函数生成的链接上创建一个头请求。
我想检查该 URL 是否仍然有效并且没有过期
对于 cors,我使用 cloud.google.com 上 cloud shell 中的 gsutils 并设置了 cors:
gsutil cors set cors.json gs://mybucket.appspot.com
Setting CORS on gs://mybucket.appspot.com/...
di@cloudshell:~ (ecutter-web)$ gsutil cors get gs://mybucket.appspot.com
[{"maxAgeSeconds": 300, "method": ["HEAD"], "origin": ["https://myapp.web.app"],
"responseHeader": ["Access-Control-Allow-Origin"]}]
但是当我向该 URL 发出头部请求时,它会显示错误:
跨域请求被阻止:同源策略不允许读取位于https://storage.googleapis.com/myapp.appspot.com/public/myfile.doc?GoogleAccessId=firebase-adminsdk-7u2d7%40myapp.iam.gserviceaccount.com&Expires=1603783901&Signature=.. 的远程资源。 (原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
这是 cors.json:
[
{
"origin": ["https://myapp.web.app"],
"method": ["HEAD"],
"responseHeader": ["Access-Control-Allow-Origin"],
"maxAgeSeconds": 300
}
]
原来的appname被myapp替换了。
以及检查有效性的功能:
function loadhandle() {
console.log('logging');
console.log(this.responseText);
}
function checkUrl(s) {
console.log('creating request');
var xml = new XMLHttpRequest();
xml.addEventListener("load", loadhandle, false);
xml.open("HEAD", s);
xml.send();
}
问题出在哪里?
【问题讨论】:
标签: javascript google-cloud-functions google-cloud-storage firebase-storage gsutil