Google云端存储 - 使用XMLHttpRequest直接上传会导致"Access-Control-Allow-Origin"错误

Why*_*ser 2 gwt google-app-engine xmlhttprequest cors google-cloud-storage

我的以下问题使用:Java,GWT,jQuery,App Engine(GAE).

关于"Access-Control-Allow-Origin" - 头部有很多问题,但似乎没有什么是我追求的.

我正在尝试使用POST对象将文件上传到Google云端存储.如果我只是使用html表单来实际上传,这可以正常工作.但是,一旦我尝试使用XMLHttpRequest发出完全相同的请求,我就会收到错误"No'Access-Control-Allow-Origin'标头出现在请求的资源上".我已经按照设置CORS进行了斗式导航.我的CORS xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
  <Cors>
    <Origins>
      <Origin>*</Origin>
    </Origins>
    <Methods>
      <Method>GET</Method>
      <Method>POST</Method>
      <Method>HEAD</Method>
      <Method>DELETE</Method>
      <Method>OPTIONS</Method>
    </Methods>
    <ResponseHeaders>
      <ResponseHeader>x-goog-meta-foo1</ResponseHeader>
    </ResponseHeaders>
    <MaxAgeSec>1800</MaxAgeSec>
  </Cors>
</CorsConfig>
Run Code Online (Sandbox Code Playgroud)

那我为什么要使用XMLHttpRequest呢?这是因为我希望能够将上传文件上传到Google云端存储(GCS).我不确定我是否在某处犯了一些错误,或者在上传到GCS时甚至可能有上传进度.但据我所知,对此应该没有限制,因为上传进程不是基于与GCS的通信(除了上传速度之外).

我已经强行清理了我的缓存,但这没有用!:(

有什么建议?

谢谢!

Why*_*ser 7

我真的不喜欢回答我自己的问题,因为在我问之前我似乎没有做足够的研究.但我真的这么做了,在我提出这个问题之前,我确实尝试了1.5天.

问题是CORS xml文件中的一行:

<ResponseHeader>x-goog-meta-foo1</ResponseHeader>
Run Code Online (Sandbox Code Playgroud)

应该替换为:

<ResponseHeader>*</ResponseHeader>
Run Code Online (Sandbox Code Playgroud)

我真的不认为这会有任何不同,因为我认为'Access-Control-Allow-Origin'标题将默认发送,因为这就是为什么我进行此设置而文档没有提及任何关于它.我确实理解这x-goog-meta-foo1是一个例子,但如果使用它会破坏设置(Google,请更新文档).