2011-01-19 14 views
14

estoy a punto de desarrollar una aplicación para iPhone con Sencha Touch + PhoneGap y tengo un par de preguntas muy básicas:Sencha + PhoneGap

1) quiero leer un archivo XML que se encuentra en la ubicación http://abc.om/app/a3/. Solía ​​Sencha para leer este xml pero su me da el siguiente error:

XMLHttpRequest cannot load the url. Origin is not allowed by Access-Control-Allow-Origin.

Es este el método/enfoque correcto a utilizar Sencha para leer el XML? En caso afirmativo, ¿cómo puedo resolver el problema anterior? Alguien dijo que Sencha está del lado del cliente y que no puede leer el Xml fuera del dominio. ¿Es cierto? ¿Qué sucede en una aplicación móvil? ¿Debo usar Phonegap aquí?

2) Como estoy desarrollando una aplicación para el iPhone, ¿cómo debo verificar la aplicación - usando Chrome? ¿O usando Phonegap cada vez y luego verificarlo en un iPhone?

+4

Estimado 'user580950', por favor mente para aceptar la respuesta si ayudó. –

Respuesta

35

En general, las aplicaciones PhoneGap no sufren restricciones de seguridad entre dominios una vez que se implementan en un dispositivo móvil. Las razones para esto son diferentes dependiendo de la plataforma en la que esté desarrollando, pero para iPhone, es porque los activos de su PhoneGap local se cargan en el navegador en el iPhone usando el URI file:///; esto le permite evitar la restricción de seguridad entre dominios. Si está creando un sitio web normal que está siendo alojado en un servidor, entonces están restringidos por esta política de seguridad. Es uno de los beneficios de crear aplicaciones PhoneGap.

  1. no estoy 100% familiar con Sencha, pero se puede usar cualquier marco en la parte superior del objeto XMLHttpRequest básico para hacer la comunicación entre dominios en PhoneGap. Ya sea Sencha, jQuery, xui, MooTools, etc.

  2. Para probar las aplicaciones PhoneGap, generalmente utilizo una combinación de mis navegadores de escritorio y algunas herramientas adicionales para ayudarme. En su caso, si carga su aplicación PhoneGap localmente en su computadora en un navegador como Safari (que le permite hacer XHRs fuera del URI file:///), no verá los problemas entre dominios. Safari es uno de los pocos navegadores que te permite hacer esto. Alternativamente, puede usar un proxy en su computadora local y hacer que su servidor web local realice las solicitudes de red y los vuelva a enviar a su aplicación. Tiendo a usar una herramienta increíble llamada sleight, que es un servidor web node.js que remite las solicitudes de proxy a un dominio externo de destino si el servidor no puede encontrar el activo solicitado localmente en su computadora. Voy a tratar de establecer un ejemplo de uso de prestidigitación para usted:

    • Asumamos sus activos de aplicaciones PhoneGap se encuentran en ~/src/www, con la aplicación de estar en index.html
    • También asumiendo desee acceder al dominio abc.com de su aplicación PhoneGap

Se podría utilizar escamoteo de esta manera:

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

Ahora tiene un servidor web local ejecutándose que sirve todo el contenido en su directorio www. Desde su página index.html, ahora puede enviar XHRs al http://abc.om/app/a3/, y el truco le devolverá los poderes. Así que puede apuntar su navegador al http://localhost:8088/index.html y obtendrá index.html de la aplicación PhoneGap.

Sleight es una herramienta increíble para el desarrollo de PhoneGap, ya que le permite probar sus aplicaciones PhoneGap sobre la marcha en su computadora.

+0

¡¡¡Gran respuesta, ¡roca! :) Pude resolverlo ... muchas gracias por tu ayuda – user580950

+0

si pudieras aceptar la respuesta, te lo agradecería :) :) –

+0

Me gustaría dar tu respuesta +2, stackoverflow sin embargo, no me deja :) –

6

Sobre la pregunta n. ° 2: Puede usar "chrome --disable-web-security" para eludir la restricción del mismo dominio y ejecutar la aplicación de su teléfono.

Editar: Como en la versión 48 de Chrome, también debe agregar la marca "--user-data-dir". Ver this question.