ACTUALIZACIÓN: Recomiendo encarecidamente no invertir ningún tiempo en XDomainRequest, ya que es una implementación terriblemente pobre con muchas limitaciones. Básicamente, solo funciona realmente para solicitudes GET a servidores que no sean SSL, por lo que también podrías usar jsonp o lo que sea.CORS con jQuery y XDomainRequest en IE8/9
Estoy usando CORS para llamar a una API de dominio cruzado, sin embargo, Internet Explorer está dando problemas. CORS debe ser posible en IE8 e IE9 a través del objeto XDomainRequest
, sin embargo no puedo conseguir cosas para trabajar ..
jQuery refuses para proporcionar soporte nativo para XDomainRequest, sin embargo, se sugieren varios plugins jQuery para añadir este apoyo. Este topic sugiere dos de tales complementos: jQuery.XDomainRequest.js y xdr.js, de los que se ha informado que funcionan. Afaik, los complementos deben anular automáticamente el comportamiento de jQuery.ajax
. Encontré otro complemento here.
que poner un poco de páginas de demostración con los complementos respectivos jQuery.XDomainRequest y xdr y jquery.ie.cors que realizan peticiones ajax a un servidor CORS habilitado. Las páginas funcionan en Chrome y Firefox, sin embargo, IE8/9 arroja instantáneamente un error de permiso denegado (incluso antes de realizar la solicitud). Este MSDN post sugiere agregar otro controlador xhr.onprogress = function() {};
, pero probé esto y tampoco funciona.
¿Alguna pista de lo que estoy haciendo mal? También probé con IE8 ahora usando el servidor virtual MS, pero tiene exactamente el mismo problema.
Editar: OK, así que descubrí que parte del problema era que estaba usando POST sobre HTTPS. Aparentemente XDomainRequest no permite CORS sobre HTTPS. Puedo cambiar a HTTP pero realmente necesito POST.
Edit2: Vea this issue on github para el final de esta historia. Resulta que al usar HTTP POST, el xDomainRequest solo puede codificar el cuerpo de solicitud (argumentos) como text/plain
. Esto prácticamente lo hace inútil, porque todos usan application/x-www-form-urlencoded
o multipart/form-data
.
Microsoft proporciona imágenes virtuales libres con IE8, por lo que si usted tiene el ancho de banda que va a ser capaz de Consíguelo. (solo un consejo) –
Gracias. Mismo problema en IE8. – Jeroen
existe un truco/truco simple para hacer que jQuery CORS ajax funcione en IE8 ... creo que puedes encontrarlo en StackOverflow al buscar respuestas a preguntas relacionadas. – c69