withcredentials true same origin error control allow javascript ajax internet-explorer cors

javascript - true - xmlhttprequest credentials same origin



Internet Explorer 10 está ignorando XMLHttpRequest ''xhr.withCredentials=true'' (3)

Añadimos un encabezado Vary: cookie y funcionó ..

Actualmente tengo un problema con una llamada ajax de dominio cruzado utilizando IE10 (en modo IE10, no es compatible).

Situación: tengo dos dominios, http://b . Tengo un conjunto de cookies para http://b . Actualmente estoy en la página http://a .

Quiero hacer una solicitud CORS a http://b usando XMLHttpRequest (que debería funcionar, de acuerdo con http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx ), e incluir la cookie en la solicitud. El 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 adjunte a la solicitud; sin embargo, la traza de Fiddler muestra que no hay una cookie adjunta, y obtengo 401: Access Denied .

El servidor está configurado para funcionar con CORS, incluye los encabezados de control de acceso:

Access-Control-Allow-Origin: http://a Access-Control-Allow-Credentials: true

(Esto no debería hacer ninguna diferencia, ya que no hay una solicitud de verificación previa de OPCIONES, y la primera solicitud que envía IE es un GET, y la cookie no está presente, lo que causa un error 401).

Además, el fragmento de código JS funciona bien tanto en Firefox como en Opera.


Es probable que sea el mismo viejo problema de IE P3P. Con la configuración predeterminada de IE, si una cookie se configura sin un encabezado P3P también presente en la respuesta, la cookie se marca como "solo para la primera parte". Lo que significa que, en un contexto de terceros, como un iframe o una solicitud CORS, IE se negará a enviar la cookie.

Para solucionarlo, debe proporcionar un encabezado P3P al configurar las cookies. Consulte http://msdn.microsoft.com/en-us/library/ms537343%28v=vs.85%29.aspx para obtener más información.

Actualización: el enlace ahora está muerto, pero puede verlo en el archivo de Internet


Tuve un problema similar, y resultó que la configuración del navegador estaba bloqueando las cookies de terceros (IE10> Opciones de Internet> Privacidad> Avanzadas> Cookies de terceros> Aceptar). Para resolver el problema, marque "Anular el manejo automático de cookies", "Aceptar" (cookies de terceros) y "Permitir siempre las cookies de sesión".