8

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ドライブにはリクエストヘッダーなしでCORSで応答する機能がありますか、それともドライブドメイン内のiframeからのある種のコールバックをサポートする私が知らない別のAPIがありますか?

この時点で私は水中でほとんど死んでいます。ヒントをいただければ幸いです。MS製品に関する質問があれば申し訳ありません。

4

1 に答える 1

3

問題が IE にあり、ヘッダーを追加できない、またはヘッダーを渡せない場合は、ヘッダーと同じ動作をAuthorizationする URL パラメーターを使用してアクセス トークンを渡すことができます。access_tokenAuthorization

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 に答える