2012-08-21 39 views
5

Las solicitudes AJAX entre dominios (realizadas con jQuery 1.7.2) no se realizan en IE9 a menos que requestTypeType esté establecido en "jsonp" o "script".Solicitudes AJAX entre dominios con IE9

Descubrí este problema al enmarcar una solicitud en la que no me interesaba la respuesta y dejé el tipo de datos no especificado (sí, sé que me debería importar la respuesta).

Así, por ejemplo, esto va a funcionar:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET", // or "POST" 
    dataType: 'jsonp' 
}); 

pero esto no será:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET" // or "POST" 
}); 

Por "trabajo" quiero decir que veo una petición HTTP realizada en Firebug o F12 .

Ambas solicitudes funcionan en otros navegadores. La configuración jQuery.support.cors = true; no afecta el éxito, ni establece crossDomain en true ni cache en false (en la solicitud AJAX).

¿Por qué el éxito de una solicitud AJAX depende del tipo de datos solicitado solo en IE? Puedo entender por qué afectaría mi capacidad para trabajar con los datos devueltos; También entiendo que algunos servidores pueden rechazar todas las solicitudes de cierto tipo de datos (pero aparentemente este no es el caso aquí).

+3

Tienes que entender qué es JSONP. – SLaks

+0

¿Encontró una resolución para esto? Tengo el mismo problema, IE9 + jQuery 1.7.2 haciendo POSTS de dominio cruzado ajax a mi WebAPI. Tengo soporte CORS adecuado construido en el lado del servidor que permite que FF/Chrome/Safari funcione correctamente. IE9 simplemente se niega a emitir la solicitud de OPCIONES previas al vuelo para determinar el soporte de CORS ... – mellodev

Respuesta

1

Esto no es una cuestión de tipo de datos sino de verificar claramente, en el navegador, que el servidor realmente quiere responder a esta consulta.

Al imponer JSONP, fuerza al servidor a tener una respuesta muy específica (incluida la llamada al método).

Tenga en cuenta que ahora hay otras soluciones: puede establecer, en el servidor, cabeceras específicas (ver https://developer.mozilla.org/en-US/docs/HTTP_access_control)

0

Si va a realizar varios dominios llamadas Ajax para manejar mensajes de forma sin volver a cargar la página, configurar el tipo de datos para "guión" funcionó para mí.

Estaría muy interesado en enlaces creíbles a la información para obtener más información acerca de por qué esto es. Me quité el pelo por un par de días sin entender por qué todos los navegadores pero IE9 estaban funcionando.

@dystroy incluso después de poner en las cabeceras, que permitió FF para trabajar, pero no hacer una diffrence en IE9 hasta que use los datos de secuencia de comandos tipo

-2

Usted no tiene que escribir un guión largo para eso. Simplemente agregue este código a continuación y vea la magia.

$(document).ready(function(){ 
jQuery.support.cors = true; 
// call your other functions below..... 
}) 
+0

Esta es una vieja pregunta que no estoy interesado en seguir adelante, pero tenga en cuenta que en mi publicación inicial afirmo que traté de configurar el 'jQuery.support.cors' propiedad a' true'. –

Cuestiones relacionadas