No tengo problemas para hacer solicitudes jsonp, sin embargo, no estoy seguro acerca de la configuración de un servicio web para entregar respuestas en jsonp.Prueba de una respuesta jsonp estática
En primer lugar, ¿es necesario configurar un servidor de cierta manera para permitir solicitudes jsonp, o la página solo debe tener la respuesta formateada correctamente?
En mis pruebas tengo la siguiente respuesta jsonp de geonames.org (He colocado una página en blanco en el servidor/dominio 1 con nada más):
<?php echo $_GET['callback'];?>({"postalcodes":[{"adminName2":"Westchester","adminCode2":"119","postalcode":"10504","adminCode1":"NY","countryCode":"US","lng":-73.700942,"placeName":"Armonk","lat":41.136002,"adminName1":"New York"}]});
El servidor/dominio 2 I' m hacer la petición siguiente:
$.ajax({
// works when I make the call to geonames.org instead of domain1
//url: 'http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?',,
url: 'http://www.domain1.com/test/jsonp.php?callback=?',
success: function(data) {
$('#test').html(data);
},
});
la llamada funciona cuando coloco los archivos en el mismo servidor (ya sea de dominio 1 o 2) y convertirla en una solicitud JSON regular. ¿Qué estoy haciendo mal?
Solo para aclarar: Mi pregunta se refiere a la página RECEPCIÓN de la solicitud. Sé que la solicitud funciona cuando llego a geonames.org, flickr, etc ... apis. Sin embargo, estoy tratando de configurar una página para enviar una respuesta. En mi ejemplo, tengo una página en blanco con jsonp codificado. No estoy seguro si tengo que tener otros encabezados en la página o si tengo algo habilitado en mi servidor.
es la persona que llama y el servidor existe en el mismo dominio ??? – kobe
@gov, no, no lo hacen. Mi ejemplo es usar tres servidores diferentes (y dominios). El dominio 1 que solicita datos de geonames.org funciona. Tomar la respuesta de geonames.org y colocarla en una página en blanco en el dominio 2 y hacer la misma solicitud desde el dominio 1 al dominio 2 no funciona. Lo mismo para revertirlo y realizar la solicitud del dominio 2 al dominio 1. – Choy
Tuve que agregar un encabezado de control de acceso para que funcione: header ('Access-Control-Allow-Origin: *'); (en PHP) – Choy