私はAmazon S3サーバに火をアップロードするプロキシを持っています。このプロキシはNodeJSを使用して作成され、私のWebページはTomcatサーバー上でホストされます。だから、Xhrをアップロードするには、両方のサーバが同じマシン上にあるので、クロスドメインの問題を解決するためにNginxを使用しなければなりませんでした。Xhrはクロスドメインリクエストのアップロードをサポートします
しかし、Nginxを使用すると多くの問題が発生するため、私の上司は、クロスドメインポリシーを使用して同じことができるかどうか尋ねました。私はそれを作ったが、それは私がすることができないことです。ここに私のコードは次のとおりです。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e) {};
xhr.open('POST', self.basePath + '/upload' + file.name, true, null, null, null, true, true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Connection", "close");
xhr.sendAsBinary(file.getAsBinary());
これはクロスドメインリクエストファイルをサーバーに到達し、応答を返す上で動作しますが、私はこれらのような進捗イベントを設定しようとすると:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(e) {};
xhr.upload.onprogress = function(){console.info('on progress');};
xhr.open('POST', self.basePath + '/upload' + file.name, true, null, null, null, true, true);
xhr.setRequestHeader("Accept", "application/json, text/javascript, */*; q=0.01");
xhr.setRequestHeader("Connection", "close");
xhr.sendAsBinary(file.getAsBinary());
クロスドメインリクエストは起動されません(POSTではなく「OPTIONS」メソッドが使用され、サーバーに到達しません)。しかし、あなたが思うかもしれませんが、私はそれをユーザーに示すために進捗イベントが必要です。誰が何が起こっているのか知っていますか?
Ps:上記のコードはすべて、「同じドメイン」要求で完全に機能します。 PS2が:私はxhr.onprogressを試みたが、それは PS3の(クロスまたは同じドメインの要求に)発射されることはありません:私はFF4 +とChrome上12+
おかげLOTを試してみました。 チアゴ