0

XHRを実行する方法を学び、w3schoolのコードをWebサーバー(tomcat7)に配置して試してみました。「note.xml」をhtmlと同じファイルに配置すると、以下のコードを使用してXMLファイルを取得できます。

xmlhttp.open("GET","note.xml",true); 

ただし、「note.xml」を別のWebアプリケーションの場所に移動すると、同じ方法を使用できなくなります。以下のコードもXMLファイルを取得できません。

xmlhttp.open("GET","http://localhost:8080/anotherWEBapp/note.xml",true);

HTML:

<html>
<body>
<h1>W3Schools Internal Note</h1>
<div>
<b>To:</b> <span id="to"></span><br />
<b>From:</b> <span id="from"></span><br />
<b>Message:</b> <span id="message"></span>
</div>
<script>
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","http://localhost:8080/test-app/note.xml",true);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.getElementById("to").innerHTML=
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
document.getElementById("from").innerHTML=
xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
document.getElementById("message").innerHTML=
xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

とにかく、JavaScriptのみを使用してXMLファイルを取得できますか?

4

1 に答える 1

3

ブラウザJSでは純粋ではありません。

クロスドメインAJAXは同一生成元ポリシーに違反しています。

他のサーバーはあなたがそれをすることを許可する必要があります。標準に準拠する方法の1つは、CORSです。ただし、これを実行するには、リモートサーバーを制御および変更する必要があります。

または、微調整する独自のサーバーコードがある場合は、それを介してプロキシすることができます。同じドメインでのようなものに対してAJAXリクエストを行います/proxy?url=http://example.com/somefile.xml。次に、サーバーコードは、バックエンドでそのファイルをフェッチしてレンダリングします。ウェブページはロード元と同じサーバーと通信するため、クロスオリジンポリシーに違反することはありません。サーバーが行うことはビジネスではありません。

または、 JSONPを使用することもできます。ただし、これも、コンテンツをページに配信するJS関数の実行で必要なコンテンツをラップするリモートホストからの協力が必要です。

于 2013-03-19T00:52:02.557 に答える