Google Storage Resumable上传因CORS错误而失败

问题描述 投票:2回答:1

我试着:

  1. 使用XML API或JSON API在服务器端生成可恢复的上载URL - >生成正确的URL并可以使用
  2. 将该URL返回给浏览器并使用JavaScript / jQuery强制将文件上载到该URL。
  3. 在进行调用时,因为是CORS请求:

a)首先发送预检请求并返回响应200,其包括具有正确主机名的头:access-control-allow-origin

b)接下来,上传请求被发送到谷歌存储,上传完成正确并返回响应(例如包括带有上传详细信息的JSON)。

但是响应不包括header:access-control-allow-origin并且因为该浏览器抱怨:跨源请求被阻止:同源策略不允许在https://www.googleapis.com/upload/storage/v1/b/test-bucket/o?uploadType=resumable&upload_id=AEnB2UoTmA9ul读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin')。

为了解决这个问题,一些文章建议:

  • 在生成可恢复上传URL时,作为“Origin”标题发送将进行真实上传的客户端的位置。我为JSON API和XML API都这样做了。但仍然是一样的
  • 配置存储区以接受CORS请求 - >这是我的存储桶CORS配置:[{“method”:[“PUT”,“GET”,“OPTIONS”],“origin”:[“*”]}]
cors google-cloud-storage access-control
1个回答
0
投票

是的,我解决了 - 问题是Java不允许使用自定义值发送/设置Origin标头。所以,即使我设置了Origin值 - 它也没有被发送。

要解决此问题,必须在启动Java进程时配置sun.net.http.allowRestrictedHeaders = true。

© www.soinside.com 2019 - 2024. All rights reserved.