如何解决已设置CORS,但不影响请求
我正在尝试使用getSignedURL
方法在使用Firebase Functions生成的链接上创建头请求。
我想检查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"],"responseHeader": ["Access-Control-Allow-Origin"],"maxAgeSeconds": 300
}
]
原始应用名称替换为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();
}
问题出在哪里?
解决方法
我在下午设置CORS
,所以我的连接速度不是那么快,我发现云shell难以启动和运行。
所以
您可以使用CORS
在getSignedUrl
上设置gsutils
,并且我使用Cloud shell
中的console.cloud.google.com
来避免进行任何安装。
首先在云外壳中通过运行以下命令检查是否存在任何CORS
配置:
gsutil cors get gs://yourstoragebucketname
然后使用上载文件菜单项上载您的CORS
文件。在我的情况下,文件名为cors.json
gsutil cors set cors.json gs://yourstoragebucketname
通过再次调用验证CORS
是否正确设置
gsutil cors get gs://yourstoragebucketname
您的cors.json
应该如下所示:
[
{
"origin":[
"https://myapp.web.app","http://localhost:5000"
],"method":[
"HEAD"
],"responseHeader":[
"Access-Control-Allow-Origin"
],"maxAgeSeconds":300
}
]
,
根据Google文档:
经过身份验证的浏览器下载端点storage.cloud.google.com
不允许CORS请求。请注意,Cloud Console为每个对象的公共URL链接提供了此终结点。
您可以使用以下两个XML API请求URL之一从包含CORS标头的Cloud Storage获取响应:
storage.googleapis.com/BUCKET_NAME
或
BUCKET_NAME.storage.googleapis.com
查看您遇到的错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at
https://storage.googleapis.com/...(Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
让我知道这是否对您有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。