2011-05-26 16 views
5

Estoy usando el método de jQuery ajax .get para recuperar datos de mi servidor. Funciona perfectamente en Chrome, pero en IE9 no envía el encabezado Cookie y eso rompe la aplicación. ¿Alguna idea de por qué? Aquí está el código jQuery:jQuery Solicitud de AJAX en IE9 no enviando el encabezado de Cookie

$.get(this.server + 'rest/photo/' + this.profileId + '/count', function(data) { 
    $('#imageCount').html(data); 
}); 

Respuesta

1

que tienen el mismo problema aquí, no puedo conseguir la función jQuery .ajax() para trabajar. La única solución que he encontrado es la siguiente:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /> 

puede añadir esta etiqueta meta a la parte superior de la página para que funcione. Pero no parece una buena solución. Creo que el problema es que el objeto xmlhttprequest en IE9 es diferente, por lo que jQuery no puede encontrar el objeto respectivo, por lo tanto, ajax no se está disparando.

0

Me encontré con un problema similar al de OP muchos años después con IE9 que, por desgracia, todavía está pendiente.

Cada navegador que probé, incluyendo IE10 +, parecía estar bien al pasar cookies a mi back-end, pero IE9 simplemente los soltaba. No parecía importar qué atributos estaban en las cookies. La página principal y la API estaban en los mismos dominios y las cookies coincidían, los esquemas eran los mismos. No estaba haciendo nada con IFRAMES, por lo que el P3P 'potato' hack no ayudó.

Así que comencé a investigar sobre qué era IE9 que podría ser diferente. This Microsoft post fue muy esclarecedor, y delinea todas las cosas que el IE8 e IE9 hizo para ayudar a bloquear los agujeros de seguridad CORS:

  • debe utilizar HTTP (S), y los dos puntos finales deben utilizar el mismo esquema
  • Debe utilizar GET/POST
  • No hay encabezados personalizados permiten
  • Sólo text/plain tipo de contenido permitió
  • más sensibles a la Zona de Seguridad Entorno
  • Estos datos se eliminan de la solicitud

El último elemento sobre las cookies me hizo pensar, ¿qué pasaría si IE9 pensara que estaba haciendo una solicitud entre sitios? Ciertamente parecía que estaba siendo derribado de esa manera. Ya había revisado algunas de las cosas obvias como el esquema y el dominio, pero tal vez no verifiqué todo.

¿La solución? Específicamente, estaba usando reqwest como mi biblioteca ajax. Tiene un parámetro de origen cruzado, que me había dejado configurado en true por algún motivo. Establecerlo (correctamente) en falso hizo el truco - todas mis cookies fueron recogidas por el servidor. Entonces fue un error tonto, pero aprendí una o dos cosas.

Espero que esto ayude a alguien!

Cuestiones relacionadas