Google drive api 否';访问控制允许原点';exportLink的标题

Google drive api 否';访问控制允许原点';exportLink的标题,google-drive-api,Google Drive Api,我有一个基本的javascript代码片段,可以从google drive下载一个公开共享的文件。我创建了一个API密钥,并将我的域配置为在允许的引用列表中。我在尝试按此处所述打开exportLink时遇到典型的CORS错误。在浏览器中访问下载链接时,其工作正常 错误: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.example.com' is t

我有一个基本的javascript代码片段,可以从google drive下载一个公开共享的文件。我创建了一个API密钥,并将我的域配置为在允许的引用列表中。我在尝试按此处所述打开exportLink时遇到典型的CORS错误。在浏览器中访问下载链接时,其工作正常

错误:

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();
代码:

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();

我已经确认这是驱动器API中的一个bug,但它只影响新Google Sheets文件的导出链接。旧的谷歌工作表和其他谷歌文件类型应该可以正常工作。我已经向团队提出了这个问题,但还不清楚需要多长时间才能解决。不幸的是,没有简单的解决方法,唯一的解决方案是引入一个服务器端组件,该组件将下载文件并将其传递给客户端。

这不是一个解决方案,但您可以尝试使用。它是由谷歌驱动团队开发的。这个库工作得很好,我可以下载一个csv文件,只需以下几行代码:

gauth = GoogleAuth()
gauth.LocalWebserverAuth()

drive = GoogleDrive(gauth)

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

请确保将您的客户_secrets.json放在同一目录中。

您可以在此处查看问题的状态:这不会提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您有足够的评论,您就可以发表评论。-@安迪,你不是走得太远了吗?我提到这不是一个解决办法,但是如果这个问题阻碍了他的工作,那么我的建议就行了。这是你回答的第一部分,给了我麻烦。“这不是一个解决方案”意味着你的答案实际上需要一个标志。如果您将答案更改为具有更多上下文/推理的答案,我将很高兴地删除该标志。