2011-08-16 8 views
2

jsonデータを取得するために、IPアドレスでアクセスするローカルハードウェアがあります。JSONPなしのJSONクロスサイト

私はウェブベースのアプリケーションを作成していますが、ドメイン間の問題のためにアプリケーションがウェブ上で実行されているときにローカルのjsonデータにアクセスすることはできません。

JSONデータをWebアプリケーションで使用できるようにする適切なソリューションはありますか?

JSONファイルをローカルで読み込むためにjQueryを使用しています。

ハードウェアは現在、JSONPを提供していません。

ありがとうございます。

答えて

4

PHP/ASP /などでプロキシすることができます。 (バックエンドで)リモート情報を照会するローカルサイトのページ。これにより、somesite.com/getForeignData(実際にはothersite.com/foreignDataを呼び出す)を呼び出して、同じドメイン内に返すことができます。

それ以外の場合は、JSONP(これは意図的に設定された境界です)を使用する必要があります。 「最後の」オプションは、ブラウザブラウザでクロスバウンダリコールを有効にすることですが、他の人に同じ能力を持たせたい場合は、一時的な解決策に過ぎません。

1

HTTP応答にヘッダーを追加できますか?はい、値*

と、次の

Access-Control-Allow-Originを追加する場合は、お使いのブラウザでは、ローカルプロキシを作成することができ、そのリソース

+0

、それはそう –

0

の要求を許可します。

たとえば、Webアプリケーションがwww.example.comで実行されている場合、www.example.com/hardwareで応答する小さなサーバー側コンポーネントを作成します。

このURLを呼び出すと、サーバー側コンポーネントはハードウェアへの直接クエリを実行し、呼び出し元のWebアプリケーションに返します。注意すべき

物事:応答が大きい場合やハードウェアが遅い場合

  • 、プロキシは、多くのことをバッファリングする必要があります。拡張性のあるソリューションを作成したい場合は、注意する必要があります。
  • プロキシでデータをキャッシュして、ハードウェアの負荷を軽減することができます。
  • データをマッサージしてから、プロキシのWebアプリケーションに送信することができます。たとえば、JSONからXMLに、またはその逆に変更します。または、あらかじめHTMLにフォーマットしておくこともできます。
0

ブラッドはプロキシを使用していると言います。ここではプロキシのいくつかのより多くの情報があります:

http://developer.yahoo.com/javascript/howto-proxy.html

あなたはPHPサーバーへのアクセス権を持っている場合は、私はhttp://www.troywolf.com/articles/でプロキシをお勧めすることができます。次が必要です:あなたのURLは、あなたは非常に便利であるflXHRを使用する場合があります。この http://<IPAddress>/RequestedJson ようになります

0

場合。

1))だけflXHR
3のインスタンスを作成flXHR
2)のライブラリーをインポートしjQueryのAjaxのオプションに

$.ajaxSetup({ 
    "xhr": myflXHRInstance 
}); 

ajaxOptions pageで詳細)
4) それを割り当てます) http://<IPAddress>の/crossdomain.xml More info about crossdomain.xml

5すなわち、あなたのIPのルートでのcrossdomain.xmlを入れてお楽しみくださいあなたのクロスドメインリクエストはjQuery経由で))

P.S.フラッシュプラグインをインストールする必要があります。 Flash Playerプラグインがインストールされていないブラウザはほとんどありません。 Riastats

EDIT:crossdomain.xmlのロシア語リンクに申し訳ありません。この方法に興味方のため
Crossdomain.xml example

+1

[CORS](http://www.w3.org/TR/cors/)として知られているあなたがこれを行う場合は、許可置くように誘惑することはありません-access-from domain = "*"これは、サイトを開いたままにしてコンテンツを読むことができるためです。問題は、crossdomain.xmlをハードウェアデバイスに配置する必要があります。これは可能ではない可能性があります。 – Erlend

関連する問題