Google drive api 为什么媒体上传失败';访问控制源不允许';?

Google drive api 为什么媒体上传失败';访问控制源不允许';?,google-drive-api,Google Drive 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/v

这是请求和响应

**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记录在


所以我要问的是,我的请求不是API指定的,或者是API指定的,API被破坏了。

正如人们评论的那样:看起来像是一个跨域问题

我假设您正在使用javascript发出此请求

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

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

您还可以将其设置为“jsonp”数据请求,用于跨域通信


如果您通过添加

Access-Control-Allow-Origin: * 
到页眉。但是,您可能无法编辑googleapis.com的标题


资料来源:


您似乎遇到了跨域问题。请参阅Thx Andreas,但问题是特定于drive sdk的。我想知道(a)我的请求是否在某种程度上与广告中的上传请求不同,或者(b)这是驱动器API中的错误。我已将问题更新为更具体的内容。@pinoyyid:您的请求很好,API也很好。限制是由您选择和实现的语言强加的。基本上,只要代码不是在浏览器中执行的,就可以从任何用C#、Java、Perl或其他语言编写的客户端进行上传。@pinoyyid那么我认为我帮不了什么忙。@SergeyKudriavtsev为什么上传可以用于多部分,但对于简单的上传却失败了?CORS对话应该是相同的,对吗?