Google云端硬盘和CORS跨域请求

时间:2012-11-17 20:57:16

标签: google-drive-api cors google-api-js-client

我一直在试图弄清楚如何从Internet Explorer中的Drive下载文件。似乎跨域安全问题阻止了这一点。

使用XMLHttpRequest的简单'GET'在Chrome和Firefox中运行良好,因为它支持请求标头,允许浏览器请求CORS响应,如以下代码行所示:

   var xhr = new XMLHttpRequest();
   xhr.open('GET', file.downloadUrl);
   xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
   xhr.onload = function() {
      callback(xhr.responseText);
   };
   xhr.send();

IE不支持请求标头,据称是出于安全原因。由于无法在这个不幸的流行浏览器中下载内容,我完全陷入困境。

我的问题是 - 世界上这些其他应用程序如何解决这个问题?他们是否使用某种服务器端代理,并通过自己的后端汇集所有驱动器请求?在这一点上,这似乎相当艰巨。或者,有没有办法在启动时访问驱动器文件,我不知道?

我已经看到一些解决方案需要两台服务器上的文件,据我所知,这不是一个选项。 Google云端硬盘是否能够在没有请求标头的情况下使用CORS进行响应,或者是否有其他我不知道的API支持从Drive域中的iframe进行某种回调?

此时我在水中已经死了。任何提示将非常感谢。很抱歉不得不提出任何与MS产品有关的问题。

1 个答案:

答案 0 :(得分:2)

如果问题是IE不允许您添加或不传递Authorization标头,您可以尝试使用access_token URL参数传递访问令牌,该参数与{{ 1}}标题:

Authorization