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!