【发布时间】:2014-06-08 12:55:45
【问题描述】:
我们正在通过我们的 App Engine 应用程序中的云存储 JSON API 生成可恢复的上传 URL,该应用程序可用于移动设备和网络应用程序。 在 web 应用程序中,使用 XmlHttpRequest 上传带有可恢复上传 url 的文件,我们收到以下错误:
XMLHttpRequest 无法加载 https://www.googleapis.com/upload/storage/v1beta2/b/... 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 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>
欢迎提出任何建议。
谢谢。
【问题讨论】:
-
我遇到了同样的问题——CORS 设置正确,并且我对任何其他服务端点都没有问题。你修过吗?
-
@ovangle 不,我们暂时放弃使用上传 URL,我们改用 XML Api。
-
您是否在 PUT 请求中使用了cors query string parameter?
-
我实际上遇到了完全相同的问题。 @akgill 我相信 ?cors 查询字符串用于更改与存储桶关联的 cors 标头。不是为了像我们在这里尝试的那样向存储桶发出可恢复的上传请求。
-
您不需要在存储桶上设置 CORS。只需在请求可恢复上传 url 时正确设置原点即可。
标签: google-app-engine google-api xmlhttprequest google-cloud-storage