Google drive api Google Drive和CORS跨域请求

Google drive api Google Drive和CORS跨域请求,google-drive-api,cors,google-api-js-client,Google Drive Api,Cors,Google Api Js Client,我一直绞尽脑汁想弄清楚如何在InternetExplorer中从硬盘下载文件。看来跨域安全问题正在阻止这一点 使用XMLHttpRequest的简单“GET”在Chrome和Firefox中运行良好,因为它支持请求头,允许浏览器请求CORS响应,如以下代码行所示: var xhr = new XMLHttpRequest(); xhr.open('GET', file.downloadUrl); xhr.setRequestHeader('Authorization', 'Be

我一直绞尽脑汁想弄清楚如何在InternetExplorer中从硬盘下载文件。看来跨域安全问题正在阻止这一点

使用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,它支持从驱动器域中的iframe进行某种回调


我现在几乎死在水里了。任何提示都将不胜感激。很抱歉,必须询问与MS产品有关的任何问题。

如果问题是IE不允许您添加或不传递
授权
标头,您可以尝试使用
访问(u Token
URL参数传递访问令牌,该参数与
授权
标头具有相同的行为:

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

您是否考虑过驱动器API的JS客户端:是的,上面显示的代码取自下载部分。它在Chrome、Firefox和Safari中工作得很好,只是在IE中没有。我寻找了一种替代方法,但似乎没有一种方法可以在IE中执行CORS auth头或字节范围头(用于部分下载)。嘿,Dano64,如果CORS不在IE上工作,我们想解决这个问题。你能让我确切地知道我们需要在谷歌方面做些什么,以便为IE解决这个问题吗?然后,我将向我们的工程师团队提交一个bug,并尝试快速修复。另外,在IE上显示当前问题的方法也将非常棒——比如,如果你可以在某个地方在线显示一些页面,我们的工程师团队可以使用这些页面来重现问题。我创建了一个小提琴,它演示了问题。谢谢你的建议。这在Chrome中运行良好。它仍然在IE中抛出一个错误,但这可能与该站点在http中运行以及下载URL始终为https有关。今晚我将安装一个安全证书,并使用启用https的测试页面重试。成功!谢谢你的帮助。这在IE中非常有效。总结一下在IE中下载Google驱动器项目的必要条件:1)使用XDomainRequest,而不是IE中的XMLHttpRequest。2)在查询字符串中传递访问令牌,如上所示。3) 使用HTTPS,因为XDomainRequest对象不允许与HTTP组合。有关IE8、IE9和即将推出的IE10问题的更多信息,请参阅下面的文章。