2012-12-14 2 views
3

J'ai examiné des applications empaquetées pour Firefox OS et je compte sur le simulateur puisque je n'ai pas de version du système d'exploitation sur un périphérique. J'ai des problèmes avec les demandes XHR et je ne suis pas sûr si le problème est un paramètre que je néglige ou si le simulateur est juste bogué. Ma lecture de la documentation suggère que l'ajout d'autorisations pour http réseau devrait être suffisant pour faire des demandes XHR à un service Web. J'ai également vu dans le code source une permission systemXHR. J'ai essayé les deux mais jusqu'à présent pas de joie. J'utilise le simulateur avec Firefox pour Mac OS X et mon manifeste ressemble à ceci:Applications empaquetées de Firefox OS et XMLHttpRequests

Manifest:

{ 
    "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" 
} 

A similar question a reçu une réponse, mais je pense que la réponse aurait été destiné à une application web , pas une application emballée, et un exemple serait utile sans regar. Est-ce qu'il me manque quelque chose d'évident, est-ce que le simulateur est cassé, ou est-ce que CORS est requis pour les applications empaquetées?

+0

modifié pour indiquer que je utilise OSX. – aerych

+0

J'ai eu la chance d'essayer ceci sur la version Windows du simulateur et XHR fonctionne comme prévu. Il semble que l'aperçu du simulateur OSX soit juste bogué. – aerych

+0

Lors de l'installation de votre application, étiez-vous le compresser et utiliser l'autre manifeste comme vous le souhaitez pour que le type privilégié fonctionne? – Macmee

Répondre

6

Notez que pour utiliser l'autorisation systemXHR, vous devez également transmettre un argument spécial lors de la création de l'objet de requête, par ex.

var xhr = new XMLHttpRequest({mozSystem: true}); 
+0

Oui, oui. J'ai cela, mais toujours pas de joie. – aerych

2

Pour Backbone ou autre framework Javascript utilisant .ajax JQuery $ sous l'utilisation du capot :

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

Je ne sais pas pense que vous devez utiliser CORS. Mon application fonctionne correctement dans le simulateur sans CORS mais ne parvient pas à appeler le serveur REST distant s'il est lancé sur le serveur local.

Sachez que si vous avez oublié de mettre

dataType: "texte"

pour certains .ajax $ appels (par exemple charger le modèle html) vous pouvez obtenir XMLDocument en conséquence tout les navigateurs de bureau retournent la chaîne.

0

Pour activer CORS dans mon application Firefox OS, je devais activer la permission systemXHR dans le fichier des applications manifest.webapp:

"permissions": { 
    "systemXHR" : { 
     "description" : "Required to access remote api" 
    } 
} 
Questions connexes