Actualmente estoy teniendo un problema con una llamada ajax entre dominios usando IE10 (en modo IE10, no compatibilidad).Internet Explorer 10 está ignorando XMLHttpRequest 'xhr.withCredentials = true'
Situación: Tengo dos dominios, http://a
y http://b
. Tengo una cookie establecida para http://b
. Actualmente estoy en la página http://a
.
quiero hacer una petición a CORS http://b
usando XMLHttpRequest (que deberían funcionar, de acuerdo con http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx), e incluyen la cookie en la solicitud. La JS es el siguiente:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://b', true);
xhr.withCredentials = true;
xhr.send();
Esto debería garantizar que la cookie se adjunta a la solicitud; sin embargo, el seguimiento de Fiddler muestra que no hay ninguna cookie adjunta, y obtengo 401: Access Denied
.
El servidor está configurado para trabajar con CORS, que incluye las cabeceras de control de acceso:
Access-Control-Allow-Origin: http://a
Access-Control-Allow-Credentials: true
(esto no debe hacer ninguna diferencia, ya que no hay opciones de solicitud de verificación previa y la primera solicitud IE envía es un GET, y la cookie no está presente, lo que causa un 401).
Además, el fragmento JS funciona bien tanto en Firefox como en Opera.
Nota: estoy viendo el mismo comportamiento cuando se utiliza jQuery, con 'xhrFields: { withCredentials: true}' – Luuseens
no tengo IE10 , pero tengo un sitio de prueba de CORS. ¿Puedes probar la siguiente solicitud en IE10 y ver si funciona? Simplemente haga clic en el botón "Enviar solicitud" y vea cuál es la respuesta. Lo intenté y funciona en Chrome. Si no funciona en IE, podría ser un error: http://client.cors-api.appspot.com/client?server.enable=true&server.credentials=true&server.httpstatus=200&client.method=GET&client.credentials = verdadero – monsur
@monsur - He hecho más pruebas. IE10 funciona en la página que proporcionó, parece que IE10 admite 'xhr.withCredentials' en páginas que tienen un nombre de dominio de segundo nivel coincidente (por ejemplo,' http: // abcom' hablando con 'http: // cbcom') , pero no cuando los nombres de dominio de segundo nivel no coinciden (por ejemplo, http://a.com hablando con http://b.com) – Luuseens