没有用于exportLink的“Access-Control-Allow-Origin”标头

时间:2014-11-09 00:01:37

标签: google-drive-api

我有一个基本的JavaScript代码段,可以从google驱动器下载公开共享文件。我创建了一个API密钥,并将我的域配置为允许引用的列表。尝试打开exportLink时出现典型的CORS错误,如https://developers.google.com/drive/web/manage-downloads所述。在浏览器中访问时,下载链接工作正常。

错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.example.com' is therefore not allowed access.

代码:

// setup api key
gapi.client.setApiKey('myKey');

// load libraries and get file from drive API
...

// download file 

var xhr = new XMLHttpRequest();
xhr.open('GET', file['exportLinks']['text/csv']);
xhr.onload = function() {
    callback(xhr.responseText);
};
xhr.onerror = function() {
    callback(null);
};
xhr.send();

2 个答案:

答案 0 :(得分:3)

我已经确认这是Drive API中的错误,但它只会影响新Google表格文件的exportLinks。旧Google表格和其他Google文件类型应该可以正常运行。我已经和团队一起提出了这个问题,但目前还不清楚修复需要多长时间。遗憾的是,没有简单的解决方法,唯一的解决方案是引入一个服务器端组件,该组件将下载该文件,然后将其传递给客户端。

答案 1 :(得分:-2)

这不是一个解决方案,但您可以尝试使用the PyDrive library。它由Google云端硬盘团队开发。这个库工作得非常好,我能够下载一个csv文件,只有以下几行:

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

file = drive.CreateFile({'id': 'YOUR ID HERE'})
file.GetContentFile('test.csv', mimetype='text/csv')

确保将client_secrets.json放在同一目录中。