Foro

Home Forums PhoneGap AngularJS – Conexión a backend php

This topic contains 5 replies, has 5 voices, and was last updated by Jose Jesus Perez Rivas Jose Jesus Perez Rivas 1 mes, 3 semanas .

Viendo 6 respuestas - de la 1 a 6 (de 6 en total)
  • AngularJS – Conexión a backend php

    Intervenciones
  • ezeq 
    Participant

    Gente, estoy trabajando con “Visual Studio Community” para el desarrollo de aplicaciones.
    El sistema utiliza AngularJS para conectarse a una especie de “servicio externo” que busca datos en una base.

    Si yo ejecuto el proyecto desde la computadora anda a la perfección, pero al momento de pasar la APK al celular (generado a través de Adobe PhoneGap Build) no funciona. Estimo que será un tema de permisos pero ya tengo todo habilitado,

    Les copio la parte del config en donde lo hago:

     Code: arbitrary (select
    1.
    2.

    <access origin="*" />
    <access origin="http://www.dominio.com.ar*" />

    Además agregué:

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.

    <allow-intent href="http://*/*" />
      <allow-intent href="https://*/*" />
      <allow-intent href="http://www.aureasud.com.ar*" />
      <allow-intent href="tel:*" />
      <allow-intent href="sms:*" />
      <allow-intent href="mailto:*" />
      <allow-intent href="geo:*" />

    Y en el index.html agregué:

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.

    <meta http-equiv="Content-Security-Policy"
              content="
                default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval';
                style-src 'self' 'unsafe-inline';
                media-src *;
                connect-src 'self' http://127.0.0.1 http://www.dominio.com.ar;
                script-src 'self' http://127.0.0.1 http://www.dominio.com.ar www.google-analytics.com ajax.googleapis.com
    " />

    Por último les paso la llamada al servicio en donde siempre llega a errorCallback

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.

    $http({
              method: 'GET',
              url: http://www.dominio.com.ar/listar.php?id=1,
              jsoncallback: 'JSON_CALLBACK'
          }).then(function successCallback(response) {
              alert("ok");
          }, function errorCallback(response) {
              alert("error");
          });

    Tendrán idea si me puede estar faltando algo?

    Desde ya muchas gracias.

    Saludos,

    • This topic was modified 1 año, 5 meses by  ezeq.

    • This topic was modified 1 año, 5 meses by  ezeq.
    David Miguel Gomez Macías 
    Participant

    Buenas tardes ezeq, has tenido solución a esto? Me encuentro en el mismo problema ahora mismo, debe ser por que el Content-Security-Policy bloquea la petición pero no se como habilitarlo.


    Nelson Hernandez 
    Participant

    Yo uso este código y me funciona bien
    Espero le sirva

     Code: arbitrary (select
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    9.
    10.
    11.
    12.
    13.
    14.
    15.
    16.
    17.
    18.
    19.
    20.
    21.
    22.
    23.
    24.
    25.
    26.
    27.

    <?php
      if (isset($_SERVER['HTTP_ORIGIN'])) {
              header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
              header('Access-Control-Allow-Credentials: true');
              header('Access-Control-Max-Age: 86400');    // cache for 1 day
      }
      if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
          header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
          header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
        exit(0);
          }
          $postdata = file_get_contents("php://input");
          if (isset($postdata)) {
        $request = json_decode($postdata);
        $idusuario = $request->idusuario;
        if ($idusuario != "") {
          
          echo  json_encode($resultados);
        }else{
          echo "Empty username parameter!";
        }
      }else{
        echo "Not called properly with username parameter!";
      }
    ?>


    David Miguel Gomez Macías 
    Participant

    De lado del servidor debería funcionar con eso que comentas Nelson Hernandez, y de lado de la aplicación a mi me ha funcionado bien con lo que postee en este hilo del foro.

    http://www.phonegapspain.com/topic/content-security-policy-permitir-mi-servidor/


    IMK
    IMK 
    Participant

    ¿Ha revisado si en el Manifest tiene permisos para conectarse a internet?, a veces este es eliminado por desinstalar un plugin que lo usaba.


    Jose Jesus Perez Rivas
    Jose Jesus Perez Rivas 
    Keymaster

    Hola a todos,

    Revisa que tengas el plugin whitelist añadido a tu proyecto y que tengas las referencias a los dominios que quieras dar acceso, por ejemplo para dar acceso a todas las urls sería:

     Code: arbitrary (select
    1.
    2.
    3.

    <access origin="*" />
        <allow-navigation href="*" />
        <allow-intent href="*" />

    Recuerda revisar que tienes añadido el plugin, en caso de compilar en local ejecuta en el terminal estando dentro de la carpeta de tu proyecto:
    1.  cordova plugin add cordova-plugin-whitelist

    En el caso de compilar con phonegap build recuerda añadir la siguiente url a tu config.xml:
    1.  <plugin name="cordova-plugin-whitelist" source="npm" spec="1.3.1" />

    Espero te sea de ayuda :)


    CEO y Director de desarrollo en Cero y Uno Desarrollamos Aplicaciones – ¿tienes algún proyecto? ¡trabajemos juntos! contacto@ceroyuno.eshttp://www.ceroyuno.es Fundador de PhoneGap Spain http://www.phonegapspain.com Twitter: https://twitter.com/JoseJ_PR


Viendo 6 respuestas - de la 1 a 6 (de 6 en total)

You must be logged in to reply to this topic.