from - how to read json jquery
La solicitud JSONP falla cuando se usa https en lugar de http (3)
Tengo un cliente API que realiza una solicitud JSONP utilizando JQuery. Todo funciona bien cuando este cliente de API no usa SSL, sin embargo falla cuando se usa el SSL.
Por ejemplo, tengo una URL http://apiclient.com y estoy realizando la siguiente solicitud JSONP de este dominio:
$.ajax({
url: url,
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
success: function(data)
{
$.each(data.services, function(index, service) {
processService(service);
});
}
});
Veo que una solicitud apropiada realizada al host de API especificada en la url y la función de devolución de llamada se llama correctamente con los datos correctamente formateados que se le pasan.
Sin embargo, cuando cambio la URL anterior del cliente de API a https://apiclient.com , no se observa ninguna solicitud en el host de API. No veo errores en ninguno de los lados de los registros.
Nota: la única diferencia es http a https en el lado del cliente API.
¿Necesita manejar la solicitud JSONP de manera diferente al usar el dominio https?
Gracias.
Editar: Este problema solo se observa con Chrome. Funciona con Firefox y Safari. Sin embargo, recibí una advertencia rápida en FireFox que me preguntaba si iba a realizar una solicitud sin cifrar desde un sitio cifrado. Lo permití y nunca volví a ver la advertencia.
Cambiar el protocolo es el mismo efecto que cambiar cualquier otra parte de la URL: provocará una violación de la política del mismo origen y lo forzará a entrar en el modo de dominio cruzado. Si ya tiene acceso al dominio cruzado, continuará trabajando con https como lo hizo con http.
puedes usar getJSON por ejemplo
$.getJSON(''ajax/test.json'', function(data) {
$(''.result'').html(''<p>'' + data.foo + ''</p>''
+ ''<p>'' + data.baz[1] + ''</p>'');
});
consulte la documentación completa de getJSON en http://api.jquery.com/jQuery.getJSON/
¿Me equivoqué? ... usar Juqery.ajax causará problemas en varios navegadores pero no con Jquery.getJSON
http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29
Aquí hay un ejemplo de JSON entre dominios cruzados
Firefox tiene un problema con HTTPS, ya que sé que se solucionará si envía su solicitud de esta manera
$.getJSON(''ajax/test.json'',{}, function(data) {
$(''.result'').html(''<p>'' + data.foo + ''</p>''
+ ''<p>'' + data.baz[1] + ''</p>'');
});
las solicitudes POST de AJAX https de soruce con jquery fallan en Firefox
espero que esto ayude
Encontré una solución. El problema era que JQuery y otros recursos se importaban desde sitios no seguros. La solución fue hacer referencia desde https.
No debería haber ninguna diferencia en la solicitud JSONP para http y https.
Pruébenos .getJSON en su lugar:
$.getJSON(url, function(data) {
$.each(data.services, function(index, service) {
processService(service);
});
});
El uso de jQuery.ajax () causará problemas en varios navegadores, pero no en el caso de jQuery.getJSON () Consulte el sitio jQuery para obtener más información: http://api.jquery.com/jQuery.getJSON/
Hay publicaciones similares con este problema: JSONP para adquirir JSON del protocolo HTTPS con JQuery