仍然没有 'Access-Control-Allow-Origin' header 可恢复上传

Still no 'Access-Control-Allow-Origin' header with resumable upload

在这个问题中,我部分参考了this one

我在我的服务器上使用 gcloud-package 为 Node.js 生成带有经过身份验证的请求的上传 URI。这是通过文件的 createResumableUpload-method 完成的。实际上传会在浏览器中完成,不会同源。

目前,我的 PUT-requests 被取消了,因为这个 header 丢失了,而 OPTIONS-requests 工作正常。

我找到了三个 none 可行的解决方案。

  1. 关于 CORS on Google Cloud Storage 文档的故障排除列表的第 8 条,建议将原点设置为 *(通配符),使用 XML CORS API。虽然这已经过时了,因为 API 已经切换到 JSON,但之后它仍然不会设置 header。我也不喜欢必须将其设置为通配符,非常不安全。
  2. 生成上传URI到*和实际来源时设置CORS-option,这些都被忽略
  3. 将 CORS 设置为查询字符串参数,这也被忽略。

我是不是遗漏了什么,还是两年后仍然没有解决?

不幸的是,这仍然不受支持。可恢复上传在逻辑上被认为是一个单一的操作,假设它涉及一个远程实体。据我了解,只有第一个 Origin header 会受到尊重。

您可以通过多种方式解决此问题。最好的方法可能是让您的服务器签署 URL 并允许客户端自己开始上传。或者,在开始上传时,您可以尝试让您的服务器提供客户端将使用的来源 header,并在整个操作过程中保持一致。

感谢,我可以解决我的问题。

事实证明,有一个非常简单的解决方案。使用请求拦截器设置 origin-header,并将其作为选项提供给存储桶中文件的 createResumableUpload-方法。

您现在可以通过浏览器完成上传。