14

Sencha Touch + PhoneGap を使用して iPhone 用のアプリケーションを開発しようとしていますが、非常に基本的な質問がいくつかあります。

1) http://abc.om/app/a3/にある XML ファイルを読みたい。Sencha を使用してこの xml を読み取りましたが、次のエラーが表示されました。

XMLHttpRequest が URL を読み込めません。Access-Control-Allow-Origin でオリジンが許可されていません。

これは、Sencha を使用して XML を読み取る正しい方法/アプローチですか? はいの場合、上記の問題を解決するにはどうすればよいですか? Sencha はクライアント側であり、ドメインから Xml を読み取ることができないと誰かが言いましたが、これは本当ですか? モバイル アプリケーションで何が起こるか? ここで Phonegap を使用する必要がありますか?

2)iPhone 用のアプリを開発しているので、Chrome を使用してアプリを確認するにはどうすればよいですか? または、毎回phonegapを使用してから、iPhoneで確認しますか?

4

3 に答える 3

36

一般に、PhoneGapアプリケーションは、モバイルデバイスにデプロイされると、クロスドメインのセキュリティ制限の影響を受けません。file:///この理由は、開発しているプラ​​ットフォームによって異なりますが、iPhoneの場合、ローカルのPhoneGapアセットがURIを使用してiPhoneのブラウザーに読み込まれるためです。これにより、クロスドメインのセキュリティ制限を回避できます。サーバーでホストされている通常のWebサイトを作成している場合はこのセキュリティポリシーによって制限されます。これは、PhoneGapアプリケーションを作成する利点の1つです。

  1. 私はSenchaに100%精通しているわけではありませんが、基本的なXMLHttpRequestオブジェクトの上にあるフレームワークを使用して、PhoneGapでクロスドメイン通信を行うことができます。Sencha、jQuery、xui、MooToolsなどです。

  2. PhoneGapアプリケーションをテストするために、私は通常、デスクトップブラウザーといくつかの追加ツールを組み合わせて使用​​します。あなたの場合、PhoneGapアプリケーションをコンピューター上でローカルにSafariなどのブラウザー(file:///URIからXHRを作成できるようにする)にロードすると、クロスドメインの問題は発生しません。Safariは、これを実行できる数少ないブラウザの1つです。または、ローカルコンピューターでプロキシを使用して、ローカルWebサーバーにネットワーク要求を行わせ、それらをアプリケーションにプロキシして戻すこともできます。私はnode.jsであるsleightと呼ばれる素晴らしいツールを使用する傾向がありますサーバーが要求されたアセットをコンピューター上でローカルに見つけられない場合に、ターゲットの外部ドメインに要求をリバースプロキシするWebサーバー。私はあなたのためにsleightの使用例をレイアウトしようとします:

    • PhoneGapアプリケーションアセットが〜/ src / wwwの下にあり、アプリがindex.htmlにあると仮定します。
    • また、PhoneGapアプリからabc.comドメインにアクセスすることを想定しています

あなたはこのようにsleightを使うでしょう:

$ cd ~/src/www
$ sleight target=abc.com

これで、wwwディレクトリの下にあるすべてのコンテンツを提供するローカルWebサーバーが実行されます。index.htmlページからXHRをhttp://abc.om/app/a3/にディスパッチでき、sleightがそれらをプロキシして返します。したがって、ブラウザーでhttp:// localhost:8088 / index.htmlを指定すると、PhoneGapアプリのindex.htmlを取得できます。

Sleightは、PhoneGapアプリを外出先でコンピューター上でローカルにテストできるため、PhoneGap開発に最適なツールです。

于 2011-01-19T19:35:59.630 に答える
5

質問 2 について: 「chrome --disable-web-security」を使用して、同一ドメインの制限を回避し、phonegap アプリケーションを実行できます。

編集: Chrome バージョン 48 と同様に、フラグ「--user-data-dir」も追加する必要があります。この質問を参照してください。

于 2011-10-09T16:35:24.133 に答える
0

質問 2 については、Ronenz の回答が有効です。

また、Chrome のいくつかの拡張機能を見つけることができます。
たとえば、私はこれを使用しており、簡単に有効化および無効化できます:
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

于 2015-07-14T05:55:30.817 に答える