Google云端硬盘和CORS跨域请求

dja*_*ham 7 cors google-drive-api 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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

在这一点上,我几乎死在水里.任何提示将非常感谢.很抱歉不得不问任何与MS产品有关的问题.

Nic*_*ier 3

如果问题在于 IE 不允许您添加或不传递标Authorization头,您可以尝试使用access_tokenURL 参数传递访问令牌,该参数的行为与标头相同Authorization

var xhr = new XMLHttpRequest();
xhr.open('GET', file.downloadUrl + '&access_token=' + accessToken);
xhr.onload = function() {
   callback(xhr.responseText);
};
xhr.send();
Run Code Online (Sandbox Code Playgroud)