3

私は Firefox OS 用のパッケージ化されたアプリを検討しており、デバイスに OS のビルドがないため、Simulator に依存しています。XHR リクエストで問題が発生しています。問題が見落としている設定なのか、シミュレーターにバグがあるだけなのかわかりません。

ドキュメントを読んだところ、web サービスに XHR リクエストを行うには、network-http のアクセス許可を追加するだけで十分であることがわかりました。ソース コードで systemXHR パーミッションも確認しました。私は両方を試しましたが、今のところ喜びはありません。OS X 版 Firefox でシミュレーターを使用していますが、マニフェストは次のようになります。

マニフェスト:

{
  "version": "0.1",
  "name": "Hello World",
  "description": "A hello world app.",
  "launch_path": "/app/index.html",
  "icons": {
    "16": "/app/img/icons/mortar-16.png",
    "48": "/app/img/icons/mortar-48.png",
    "128": "/app/img/icons/mortar-128.png"
  },
  "installs_allowed_from": ["*"],
  "permissions": {
    "systemXHR": {},
    "network-http": {},
    "network-tcp": {}
  },
  "type": "privileged"
}

同様の質問に回答がありましたが、その回答はパッケージ化されたアプリではなく Web アプリを対象としている可能性があり、例は関係なく役立つと思います。

明らかな何かが欠けていますか、シミュレーターが壊れていますか、それともパッケージ化されたアプリに CORS が必要ですか?

4

4 に答える 4

7

systemXHR権限を使用するには、リクエストオブジェクトを作成するときに特別な引数を渡す必要があることに注意してください。

var xhr = new XMLHttpRequest({mozSystem: true});
于 2012-12-14T15:47:23.383 に答える
2

内部で JQuery $.ajax を使用するバックボーンまたはその他の Javascript フレームワークの場合:

$.ajaxSetup( {
    xhr: function() {return new window.XMLHttpRequest({mozSystem: true});}
});

CORSを使う必要はないと思います。私のアプリは CORS なしのシミュレーターで正常に動作しますが、ローカル サーバーで起動するとリモート REST サーバーを呼び出すことができません。

設定を忘れた方はご注意ください

データ型:「テキスト」

一部の $.ajax 呼び出し (html テンプレートの読み込みなど) では、結果として XMLDocument を取得できますが、デスクトップ ブラウザーは文字列を返します。

于 2013-09-25T11:02:22.583 に答える
0

Firefox OS アプリで CORS を有効にするには、アプリの manifest.webapp ファイルで systemXHR パーミッションを有効にする必要がありました。

"permissions": {
    "systemXHR" : {
      "description" : "Required to access remote api"
    }
}
于 2014-08-20T19:03:23.450 に答える
0

Rob Nyman Boilerplate を見てみましょう。彼は動作する XHR デモを持っています。

https://github.com/robnyman/Firefox-OS-Boilerplate-App

http://robnyman.github.com/Firefox-OS-Boilerplate-App/

于 2013-03-05T16:05:02.487 に答える