TransWikia.com

Necesito subir una API Rest a un servidor web

Stack Overflow en español Asked by Subte on November 29, 2020

tengo una API Rest que utilizo en local y necesito subirla a un servidor web. El problema que tengo es que no se configurarla una vez subida para que se comunique con la base de datos SQL del servidor.

El error que obtengo es este:

XMLHttpRequest cannot load http://error.hostinger.eu/?. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://hanoi.hol.es' is therefore not allowed access. 

Es la primera vez que tengo que subir las cosas a un servidor, disculpad mi ignorancia 🙂

PD: acabo de darme cuenta que la api lleva incorporadas las CORS.

header("Access-Control-Allow-Orgin: *");
header("Access-Control-Allow-Methods: *");
header("Content-Type: application/json");

PD-2: solo por descartar, la direccion para que se conecte a la base de datos debería ser esta $_server = "mysql.hostinger.es"; ?

3 Answers

Este error es muy común, para realizar peticiones a un servicio Api Rest/Ful, se debe dar primero permisos a los dominios/host donde serán consumido la Api.

Puedes dar permiso a solo uno o los dominios que quieras

Ejemplo:

('Access-Control-Allow-Origin: http://misitio1.com');
('Access-Control-Allow-Origin: http://otrositio.com');
('Access-Control-Allow-Origin: https://www.tusitio2.com');
('Access-Control-Allow-Origin: http://www.ejemplo.com');

Puedes usar el comodín * para referirte a todos.

Más información en Mozilla: Access_control_CORS

Es decir tu servidor cuando recibe la petición comprueba el host de donde lo estás pidiendo y si se encuentra en su lista de host permitidos, te envía los datos.

Usando PHP

Establece la siguiente cabecera en todos los recursos que devuelve alguna petición.

 header('Access-Control-Allow-Origin: *');  

Usando Apache en .htaccess

Establece la siguiente directiva en el archivo .htaccess de tu servidor.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Answered by Webserveis on November 29, 2020

Conociendo que estás usando Hostinger, es un entorno LAMP (aunque sigo pensando que debería llamarse GLAMP, la G de GNU) bueno, regresando a la respuesta:

En el root de tu website (donde esta el public_html) hay un archivo llamado .htaccess a dicho archivo, agrega la siguiente linea:

 Header set Access-Control-Allow-Origin "*"

Sigue con todo el power al desarrollo! y recuerda, nadie ha nacido sabiendo, todos aprendemos y si es en equipo, mejor :D

Answered by fredyfx on November 29, 2020

normalmente cuando trabajas una API en local con un motor de base de datos SQL le especificas la dirección a la cuál debe apuntar la API, que en local es localhost o 127.0.0.1, que vienen siendo lo mismo. Ahora, cuando tu aplicación esté en el servidor debes especificarle la dirección de tu servidor más el puerto, por ejemplo: : Lo que está en los signos < (menor que) y > (mayor que) deben ser cambiados por los datos de tu servidor y eliminar estos signos.

Cabe aclarar que los datos de autenticación pueden variar, así que te recomiendo revisar el usuario y la contraseña de la base de datos del servidor para que los cambies también en tu API.

Si obtienes esl siguiente error: XMLHttpRequest cannot load http://error.hostinger.eu/?. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://hanoi.hol.es' is therefore not allowed access

es porque incumples esta esta política [Política del mismo orígen] (https://es.wikipedia.org/wiki/Pol%C3%ADtica_del_mismo_origen) que especifica que un servidor no puede aceptar peticiones de un dominio diferente. Hay dos formas de solucionar eso: desde el cliente con JSONP o con CORS desde el servidor, donde la más recomendada es usar CORS, porque si lo haces con JSONP cada cliente debería implementarlo, en cambio si lo haces desde el servidor sólo lo haces una vez. Para tu caso específico busca la mejor forma de agregar CORS, por ejemplo si es JAVA busca: "add cors to java web application" o si es para nodeJS con Express puedes buscar: "add CORS to express" y así sucesivamente, de acuerdo al framework que utilices

Answered by Cristian Hoyos on November 29, 2020

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