8

我一直在绞尽脑汁想弄清楚如何在 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 Drive 是否能够在没有请求标头的情况下使用 CORS 进行响应,或者是否有另一个我不知道的 API 支持来自 Drive 域内 iframe 的某种回调?

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

4

1 回答 1

3

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

var xhr = new XMLHttpRequest();
xhr.open('GET', file.downloadUrl + '&access_token=' + accessToken);
xhr.onload = function() {
   callback(xhr.responseText);
};
xhr.send();
于 2012-11-20T17:16:29.933 回答