2012-10-25 3 views
4

Je suis en train de créer une application mobile avec PhoneGap et j'en ai besoin pour intégrer mes services RESTful api. Fondamentalement, si je veux récupérer/supprimer/mettre à jour/vérifier/(action nonempempent) la ressource, l'émission d'une requête GET/DELETE/PUT/HEAD/POST via la méthode ajax de jQuery à http://example.com/resource/:id est supportée. C'est là que je cours dans le problème. Comme PhoneGap détient des fichiers et les sert localement (par exemple: fichier: //fichier.html), je vais avoir des problèmes de domaines croisés avec l'appel ajax. De plus, je comprends que JSONP insère essentiellement un script dans le document, est donc une solution à une méthode de demandePhoneGap et différentes requêtes de méthode HTTP à une API RESTful

Voici quelques idées:

  1. au lieu de demander un type de données de JSON ou JSONP, pourrait une demande de travail HTML, puis analyser la réponse du document dans un objet JSON?
  2. Pour chaque demande, créer et supprimer un iFrame dans la page comme cette affiche Using PUT/POST/DELETE with JSONP and jQuery (se sent sale et inélégante)
  3. Une certaine forme de CORS côté serveur avec nom d'utilisateur/mot de passe ou jeton à envoyer à la demande pour permettre à ce (Je commence à sortir sur iOS d'abord)
  4. Une autre tactique que je ne peux pas créer de façon créative.

Quelle est la solution la plus élégante à ce problème? Les plugins sont les bienvenus.

TL; DR: Comment ajouter un support interdomaine sur les requêtes $ .ajax pour différentes méthodes HTTP?

Répondre

5

Vous devez lister votre serveur dans les propriétés PhoneGap. Par défaut, PhoneGap restreint l'accès aux sites externes pour éviter les problèmes de sécurité. PhoneGap ne comporte pas de problèmes inter-domaines, tels que les sites hébergés sur http standard. Lire ici pour plus de détails: http://docs.phonegap.com/en/2.1.0/guide_whitelist_index.md.html#Domain%20Whitelist%20Guide

+0

Cool! Quand je serai derrière le code, je vais essayer ça. On dirait une solution élégante si je le dis moi-même :) –