3

XmlHttpRequestオブジェクトが「同一ドメイン」ポリシーに準拠していることを理解しています(私は思います)。ただし、WebサーバーからXMLをダウンロードしてそれを使用して何かを実行する単純な(POC)ローカルhtmlファイルを作成したいと思います(単純な「alert()」から始めましょう)。

それは可能ですか?特別なFirefox設定オプションが必要ですか?

ダウンロードしようとしているサーバーは私の管理下にありません(実際にはGoogle APIです)。

私の簡単な試みは、Mozillaの「UsingXMLHttpRequest」ページのコードです。「send」メソッドからはよくわからないエラーが返されます。

免責事項:私は主にC / C ++開発者です。本格的なJSプログラミングを行ったことはなく、これらのAPIを使用しようとしたこともありません。

4

5 に答える 5

3

XMLHttpRequestは、実際には同じドメインポリシーのより厳密な実装に準拠しています。document.domainプロパティを設定して、2つのサブドメインから提供されるJavaScriptが相互に通信できるようにすることはできますが、XMLHttpRequestObjectではそれを行うことはできません。あなたの場合、完全に異なるドメインに行くと、JavaScriptでもそれを行うことができませんでした。

いくつかのオプションがあります。まず、リバースプロキシを使用して、外部サイトがサイトのサブドメインであるように見せることができます。Apacheのmod_proxy、特にProxyPassReverseを見てください

もう1つの方法は、データをJSONオブジェクトとして返すことです。<scriptsrc = "foo">は、必要な場所から必要なデータを取得できます。これの欠点は、(同じページからの複数のリクエストのように)(簡単に)繰り返すことができないことです。

また、「グーグルマッシュアップ」のためにグーグルすることをお勧めします。これらのほとんどは「googlemashops.com」ドメインに存在するため、実装がはるかに簡単になります。いくつかはそのドメインの外に住んでいて、あなたにいくつかのアイデアを与えるかもしれません。

編集:XMLHttpRequestオブジェクトを直接使用するのではなく、prototype.jsなどのサードパーティライブラリを使用することをお勧めします

于 2008-12-25T13:24:05.577 に答える
1

取得しようとしているXMLがGoogleのJSAPIの1つによって返される場合、XmlHttpRequestは必要ありません(これは、ページと同じドメインでのみ使用できるためです)。

したがって、MapsなどのGoogle APIを使用する場合は、通常、ページのどこかに共通のAPIへの参照を追加することから始めます。

<script type="text/javascript" src="http://www.google.com/jsapi?key=your_google_api_key"></script>

次に、使用する予定の特定のAPIへの参照をページに追加します。

<script type="text/javascript">google.load("maps", "2");</script>

これで、そのAPIによって提供されるさまざまな関数を呼び出すことができます。

<script type="text/javascript">
  function initialize() {
    var map = new google.maps.Map2(document.getElementById("map"));
    map.setCenter(new google.maps.LatLng(41.86, 87.68), 13);
  }
  google.setOnLoadCallback(initialize);
</script>

XmlHttpRequestは必要ありません:)

于 2008-12-25T13:24:25.217 に答える
1

JSONP を使用してこれを行うことができます。ここでは jQuery と PHP を使用してそれを行います。基本的に、PHP プロキシを使用して JSON 応答をラップし、jQuery が処理できるようにします。それはBSDの下にあります。

于 2009-09-28T14:37:44.173 に答える
0

または、IE8 を使用してみてください。ウェブサイトではなくディスクから実行している場合、IE8 は通常のドメイン制限をすべて無視し、必要なデータを取得します。

于 2009-09-28T14:24:34.317 に答える
0

jQuery (おそらく XHR ですが、直接は使用しないようにしています) を使用すると、通常とは異なるヘッダーや非 GET メソッドを指定しない限り、クロスドメイン リクエストを問題なく実行できます。これらを使用したい場合は、サーバーを制御して OPTIONS リクエストを有効にする必要があります。

詳細については、 https://developer.mozilla.org/En/HTTP_access_controlを参照してください。

于 2012-01-21T14:08:00.683 に答える