【问题标题】:Still no 'Access-Control-Allow-Origin' header with resumable upload仍然没有可恢复上传的“Access-Control-Allow-Origin”标头
【发布时间】:2016-09-03 10:47:18
【问题描述】:

在这个问题中,我部分指的是this one

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

目前,由于缺少此标头,我的 PUT 请求被取消,而 OPTIONS 请求工作正常。

我找到了三种解决方案,但都不起作用。

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

我在这里遗漏了什么,还是两年后仍未解决?

【问题讨论】:

    标签: google-cloud-storage google-cloud-platform


    【解决方案1】:

    感谢Brandon Yarbrough's answer,我可以解决我的问题。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 很公平。它在某种程度上确实有意义,尽管它也对功能的实现施加了相当多的限制。无论如何,谢谢你的想法!
      猜你喜欢
      • 2014-06-08
      • 2016-01-21
      • 1970-01-01
      • 2016-08-12
      • 2017-09-19
      • 2015-04-02
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多