entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Duda sobre programar API

Buenos días, estoy desarrollando una API simple con php, a la cual mando una peticion Ajax, mandando como parámetro una clave api y datos varios, la API me válida si la key es correcta y me opera dichos datos para devolverme una respuesta, funciona correctamente en localhost.

Ahora e subido toda la api a un servidor en internet con un dominio y he probado a hacerla funcionar desde otra web, del mismo modo, desde la web2 hago una peticion ajax a "hhttp://midominio.com/api/api.php?parametros..." y me devuele este error.

XMLHttpRequest cannot load http://midominio.com/api/api.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 500.

¿Alguien sabe que puede estar pasando? no es la primera vez que hago peticiones ajax a paginas de otro dominio sin problema.

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @cobasESP,

el error se produce porque estás violando las políticas de acceso del mismo origen, que están pensadas para que un javascript malicioso no pueda recibir contenido de un dominio diferente al propio.

Hay varios mecanismos para permitir esto. Te dejo un enlace que explica y resume esta cuestión, con ejemplos de código y todo http://www.html5rocks.com/en/tutorials/cors/

En mi caso, siempre me bastó con poner un header en la respuesta indicando que se acepte el envío al otro dominio

<?php
header("Access-Control-Allow-Origin: *");
...

Pero poner una API Key y todo eso es más prolijo, aunque redundante a mi entender si el control de la API Key lo hacés en PHP.

Saludos cordiales!

1voto

cobasESP comentado

Eso me sirvió, gracias :)
Aún asi también tuve que poner jsonp en dataType de la petición ajax.

1voto

Leonardo-Tadei comentado

Hola @cobasESP,

me alegra que te haya servido. Lo de poner jasop en la petición AJAX es una restricción de JQuery para aceptar este tipo de respuestas.

En caso de contectarta usando directamenet el objeto XMLHTTPRequest de JavaScript, no es necesario indicar nada a la consulta.

Saludos y gracias por el tip de jsonp !

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta