Jkm*_*kmn 20 google-app-engine xmlhttprequest google-api google-cloud-storage
我们正在通过我们的App Engine应用程序中的云存储JSON API生成可恢复的上传URL,这些应用程序可用于移动设备和Web应用程序.在Web应用程序中,使用XmlHttpRequest上传具有可恢复上传URL的文件,我们收到以下错误:
XMLHttpRequest无法加载https://www.googleapis.com/upload/storage/v1beta2/b/ ...请求的资源上没有"Access-Control-Allow-Origin"标头.因此,不允许来源" https://ourapp.appspot.com "访问.
在Chrome开发人员工具中,网络日志显示第一个OPTIONS请求,其中包含相应的"Origin"请求标头和"Access-Control-Allow-Origin"响应标头,但后面提到的PUT请求失败.
我们的桶上的cors xml看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
<Cors>
<Origins>
<Origin>*</Origin>
</Origins>
<Methods>
<Method>PUT</Method>
<Method>GET</Method>
<Method>POST</Method>
<Method>HEAD</Method>
<Method>DELETE</Method>
<Method>OPTIONS</Method>
</Methods>
<ResponseHeaders>
<ResponseHeader>*</ResponseHeader>
</ResponseHeaders>
<MaxAgeSec>1800</MaxAgeSec>
</Cors>
</CorsConfig>
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议.
谢谢.
小智 6
遇到这个问题并发现它是由于来自App Engine的初始POST请求中缺少"origin"头.
我的POST请求包含content-length(设置为0),x-upload-content-type和origin,一切都很好.
[1] https://cloud.google.com/storage/docs/json_api/v1/how-tos/upload#resumable
Seb*_*ian -1
端点https://www.googleapis.com
不允许跨源资源共享 (CORS)。这意味着所有浏览器都会阻止从不在原始主机 (www.googleapis.com) 上运行的网站发出的请求。
确保您为您的存储桶配置了 CORS,例如:
<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
<Cors>
<Origins>
<Origin>https://ourapp.appspot.com</Origin>
</Origins>
<Methods>
<Method>GET</Method>
<Method>HEAD</Method>
<Method>PUT</Method>
</Methods>
</Cors>
</CorsConfig>
Run Code Online (Sandbox Code Playgroud)
如果它仍然无法正常工作<Origin>*</Origin>
,请尝试使用curl并报告结果。
归档时间: |
|
查看次数: |
5444 次 |
最近记录: |