我的以下问题使用:Java,GWT,jQuery,App Engine(GAE)。
有很多关于“Access-Control-Allow-Origin”头的问题,但似乎没有什么是我追求的。
我正在尝试使用POST Object将文件上传到Google云端存储。如果我只是使用html表单来实际上传,这可以正常工作。但是,一旦我尝试使用XMLHttpRequest发出完全相同的请求,我就会收到错误“No'Access-Control-Allow-Origin'标头出现在请求的资源上”。我遵循了setup CORS for a bucket - 指南。我的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>
那我为什么要使用XMLHttpRequest呢?这是因为我希望能够将上传文件上传到Google云端存储(GCS)。我不确定我是否在某处犯了一些错误,或者在上传到GCS时甚至可能有上传进度。但据我所知,对此不应有任何限制,因为上传进程不是基于与GCS的通信(除了上传速度之外)。
我已经强行清理了我的缓存,但这没有用! :(
有什么建议吗?
谢谢!
答案 0 :(得分:6)
我真的不喜欢回答我自己的问题,因为在我问之前我似乎没有做足够的研究。但是我确实做到了,在我提出这个问题之前,我确实尝试了1.5天。
问题是CORS xml文件中的一行:
<ResponseHeader>x-goog-meta-foo1</ResponseHeader>
应替换为:
<ResponseHeader>*</ResponseHeader>
我真的不认为这会有任何不同,因为我认为'Access-Control-Allow-Origin'标题将默认发送,因为这就是我进行此设置和{{3}的原因}没有提到任何关于它的事情。我确实理解x-goog-meta-foo1
是一个例子,但如果使用它会破坏设置(Google,请更新文档)。