TransWikia.com

Problema con ApiRestful con IONIC + MYSQL

Stack Overflow en español Asked by Luis Vallejos on December 9, 2021

Estoy desarrollando un sistema que usa Ionic con Mysql, el problema recide en que soy incapaz de poder realizar un Post.

Estoy usando 000Webhost (gratuito).

Este es el código PHP.

<?php
    
 $mysqli  = mysqli_connect("localhost", "X", "X", "X");
 
 $data = json_decode(file_get_contents("php://input"));
 
 $CodPersona = $data->CodPersona;
 $Nombre = $data->Nombre;
 $ApePaterno = $data->ApePaterno;
 $ApeMaterno = $data->ApeMaterno;
 
 $consulta="INSERT into personas set CodPersona='$CodPersona', Nombre='$Nombre',ApePaterno='$ApePaterno',ApeMaterno='$ApeMaterno'";
 
 $result=mysqli_query($mysqli, $consulta);
 
 if ($result) 
 {
    http_response_code(201);
    echo json_encode(array('message' => 'User created'));
 } 
    else 
 {
    http_response_code(500);
    echo json_encode(array('message' => 'Internal Server error'));
 }

?>

Este es el código que realiza la petición en Ionic, siendo "userinfo" un objeto.

insertUsers(userinfo)
  {
    return this.http.post(`https://ceedb.000webhostapp.com/bd/insert.php`, userinfo);
  }

El error es que una vez hecho todo, no registra nada, pero cuando lo hago mediante postman, si registra.

Este es el error que sale.

introducir la descripción de la imagen aquí

¿Alguien sabe que puedo estar haciendo mal?

One Answer

Existe un problema de cruce de dominios distintos. Revisa este articulo sobre CORS. Seguramente estas haciendo la peticion http desde otro dominio (local o de un dominio distinto a ceedb.000webhostapp.com, por lo que la peticion entrega un error.

EL navegador esta intentando obtener mediante OPTIONS las opciones que tiene para obtener el recurso. Espera encontrar algunos encabezados como:

Access-Control-Allow-Origin: http://dominio.origen
Access-Control-Allow-Methods: POST, GET, OPTIONS

Por lo que podrias agregar a tu script PHP algunos encabezados:

<?php
// permitir peticiones a este script desde cierto origen (puede usar * para probar inicialmente)
header("Access-Control-Allow-Origin: http://tu.dominio.origen"); 
// Que tipos de metodos son posibles
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");

Si dichos encabezados no son suficientes, revisa el articulo que te indicara otras opciones o requisitos para que la peticion sea realizada con exito.

Answered by F.Igor on December 9, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP