1

誰かがこれで私を助けることができるかどうか疑問に思っていました.WebでXDomainRequestを使用した例をいくつか見ましたが、実際にはコードをうまく説明していません. XML ファイルを読み込もうとしているので、解析できます。私が使用しているコードは以下のとおりです。

    var xdr = new XDomainRequest();             
           xdr.onerror = 
           function () 
           {
                    alert('Error!');
           };               
           xdr.ontimeout = 
           function () 
           {
                    alert('Timeout!');
           };

           xdr.onprogress = 
           function () 
           {
                    alert('Loading...');
           };
           xdr.onload = 
           function() 
           {
                    alert('File:' + xdr.responseText);
           }

           xdr.timeout = 10000;
           xdr.open("GET","http://www.spectraltechnologies.co.uk/webbuilder2020/Instrument_Lamps_New.txt", false);
           xdr.send();

これを使用しようとするたびに、常に xdr.onerror とそれに付随するアラートが返されます。それが要求するファイルはもともと XML ファイルであり、内部は XML 形式ですが、.txt のコピーを作成しました。これが XDomainRequest が受け入れる唯一のものであることを理解しています。

Firefox および Chrome ブラウザーのソリューションを作成することができましたが、Internet Explorer は多くの問題を引き起こしました。誰かが助けてくれることを本当に願っています、事前に感謝します。

4

1 に答える 1

1

私は、XDomainRequest の長くて非常に具体的な仕様に固執することで、これを解決しました。私の最初の問題は、アクセスしていたファイル/サイトからの応答ヘッダーが正しくないことでした。

このサイトは「.htaccess」ファイルを使用していたため、以下のコードを追加することでこの問題を修正できました。

    <filesMatch "\Instrument_Lamps_New.txt$">
    <IfModule mod_headers.c>
    Header add Access-Control-Allow-Origin "*"
    </IfModule>
    </filesMatch>

このコードは、アクセスされているファイルが指定されたヘッダーが必要なファイルであるかどうかを確認し、それをヘッダーに追加します。

私の 2 番目の問題は、XDomainRequest を使用すると、要求を開こうとしているファイルと同じプロトコルのファイルにしかアクセスできないことです。つまり、http は http のみを開き、https は https のみを開きます。サイトのデバッグのため、自前のファイルシステムからページを開いていたため、「file://...」≠「http://...」でエラーが発生しました。

したがって、応答ヘッダーに「Access-Control-Allow-Origin」ヘッダーが含まれていることを確認した後、ページをアップロードすると正常に機能しました。

このサイトには、XDomainRequest に関する詳細情報が含まれています

于 2012-05-01T10:16:18.297 に答える