谷歌云端硬盘 API - 为什么此媒体上传失败"访问控制源不允许"?



这是请求和响应

**Request URL:https://www.googleapis.com/upload/drive/v2/files/0B6B-RNrxsCu2S0xxSkZQUEQ3eDQ?uploadType=media**
Request Method:OPTIONS
Status Code:200 OK
Request Headersview source
:host:www.googleapis.com
:method:OPTIONS
:path:/upload/drive/v2/files/0B6B-RNrxsCu2S0xxSkZQUEQ3eDQ?uploadType=media
:scheme:https
:version:HTTP/1.1
accept:*/*
accept-encoding:gzip,deflate,sdch
accept-language:en-US,en;q=0.8,en-AU;q=0.6
access-control-request-headers:accept, content-type, authorization, upload-content-length, upload-content-type
access-control-request-method:PUT
origin:http://dev.example.co:8888
referer:http://dev.example.co:8888/app/drivecrud.html
user-agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36
Query String Parametersview sourceview URL encoded
uploadType:media
**Response Headersview source**
alternate-protocol:443:quic
cache-control:no-cache, no-store, max-age=0, must-revalidate
content-length:0
content-type:application/octet-stream
date:Fri, 18 Apr 2014 06:46:58 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:HTTP Upload Server Built on Apr 11 2014 13:30:54 (1397248254)
status:200 OK
version:HTTP/1.1

失败。。。

OPTIONS https://www.googleapis.com/upload/drive/v2/files/0B6B-RNrxsCu2S0xxSkZQUEQ3eDQ?uploadType=media 
Origin http://dev.example.co:8888 is not allowed by Access-Control-Allow-Origin.

通过确认其他一切似乎都很好…

  • 我刚刚创建了要上传内容的文件,所以它不是权限
  • 如果我替换uploadType=media->=multipart,那么我可以正确创建包含内容的新文件

所以感觉就像

  • 我在某种程度上误解了请求
  • 驱动器错误

驱动器API记录在https://developers.google.com/drive/web/manage-uploads#simple

所以我在问,我的请求是不是没有按照API的规定,还是按照规定,API被破坏了。

正如人们所评论的:看起来像是一个跨领域的问题。

我假设您正在使用javascript进行此请求;

基本上,你遇到了一种安全措施,可以防止脚本在你不知情的情况下将数据从一个站点移动到另一个站点

我发现解决这个问题的最简单方法是jQuery File Upload,除非你可以在googleapis.com上编辑标题。它可以跨域工作:)

您也可以将其设置为"jsonp"dataRequest,用于跨域通信。


如果您可以通过添加来控制接收/响应服务器,则可以很容易地修复

Access-Control-Allow-Origin: * 

到标头。然而,你可能没有机会编辑googleapis.com的标题。


来源:http://www.fbloggs.com/2010/07/09/how-to-access-cross-domain-data-with-ajax-using-jsonp-jquery-and-php/

访问控制-允许-原始错误将jQuery Post发送到Google API';s

http://cypressnorth.com/programming/cross-domain-ajax-request-with-json-response-for-iefirefoxchrome-safari-jquery/

相关内容

最新更新