IE10 User-Agent hace que ASP.Net no devuelva Set-Cookie (IE10 no configura cookies)

91

Resumen

ASP.Net no devuelve un Set-Cookieencabezado cuando usa IE 10. Lo que significa que, por ejemplo, no puede iniciar sesión en un sitio ASP.Net usando IE10 cuando usa la autenticación de formularios, por ejemplo.

Detalle

Actualmente estamos probando una de nuestras aplicaciones web heredadas con IE 10 [Vista previa 2].

Cuando intentamos iniciar sesión usando la autenticación de formularios, no obtenemos un Set-Cookieencabezado en la respuesta si el agente de usuario es el de IE 10. Lo hemos intentado con un sitio .Net 2 y .Net 4 en blanco.

Debido a que no podíamos / no lo creíamos, incluso ejecutamos la siguiente solicitud HTTP manualmente telnet, después de usar todas las herramientas habituales, y obtuvimos la misma respuesta.

GET http://test.ourdomain.co.uk/ HTTP/1.1
Accept: */*
Host: test.ourdomain.co.uk
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)
Content-Length: 0

La solicitud HTTP anterior devuelve no Set-Cookieen la respuesta. ¡Sin embargo, si simplemente cambiamos el User-Agent para Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/6.0)que funcione!

¿Alguien más puede replicar esto? No puedo encontrar ningún problema conocido con las cookies IE10 que no sea un problema que afecte a los patrones de URL no estándar.

Revisión

Después de que devio publicó la respuesta original, con una solución alternativa, nullptr ha confirmado que ahora hay una revisión para esto .

http://support.microsoft.com/kb/2600088

He promovido la revisión a la pregunta principal ya que es más útil para futuras referencias, pero por favor, vote a favor de los usuarios mencionados.

isNaN1247
fuente
1
Nota: el ejemplo anterior fue de nosotros configurando una cookie en una solicitud de obtención (usando Response.SetCookie ())
isNaN1247
Otra posible solución con browserCaps : stackoverflow.com/a/13474958/1191905
Anton Skovorodko
¿Aplicamos la corrección urgente a IIS o la máquina cliente?
Arcadian
@ magic-c0d3r esta es una revisión para .NET en sí, por lo que debe aplicarse a la máquina que aloja IIS (es decir, el servidor web)
isNaN1247
3
La revisión para .NET 2.0 / 3.5 también puede ser de interés: support.microsoft.com/kb/2600100
fortboise

Respuestas:

66

Encontré esta entrada en MS Connect , el comportamiento es un error reconocido.

Solución alternativa sugerida (de la entrada):

== Solución ==

Mientras tanto, para que funcione y para evitar problemas similares en el futuro, uso un archivo ~ \ App_Browsers \ BrowserFile.browser con lo siguiente:

<browsers>
<browser refID="Default">
<capabilities><!-- To avoid wrong detections of e.g. IE10 -->
<capability name="cookies" value="true" />
<capability name="ecmascriptversion" value="3.0" />
</capabilities>
</browser>
</browsers>
devio
fuente
7
Oh mi ... eso es un pequeño error - dudo mucho que todos los sitios ASP.Net vayan a ser parcheados para el momento del lanzamiento de IE10.
isNaN1247
2
gracias por esto. me ayudó a comenzar con nuestras pruebas de compatibilidad con nuestra aplicación. Al principio era difícil saber si era nuestra aplicación o la versión beta, pero tener una solución nos hizo productivos
MikeJ
Esto me funciona con IE10 / Win8, pero NO con IE10 / Win7. Muy extraño.
ScottE
1
Me sorprende que esto funcione para algunas personas porque no fue así para mí. Consulte la respuesta cookieless = "UseCookies" a continuación para obtener una solución alternativa que creo que es más resistente y a prueba de futuro.
Mike Nelson
71

El problema reside en algunas instancias de IIS que piensan que IE10 es un navegador sin cookies (es decir, no admite cookies). En nuestro caso problemático, el servidor estaba configurando la cookie de autenticación y enviándola de vuelta al navegador, pero luego ignoraba la cookie en solicitudes posteriores.

La solución es parchear las capacidades del navegador para que sepa que IE10 puede hacer cookies (descrito en otra respuesta en esta página), o cambiar el comportamiento predeterminado para forzarlo a usar cookies incluso si cree que el navegador no puede hacer cookies.

Acabamos de agregar lo siguiente a nuestra sección de formularios en web.config:

cookieless = "UseCookies"

<authentication mode="Forms">
  <forms name=".AUTH" cookieless="UseCookies" loginUrl="/" timeout="10000" path="/" />
</authentication>
Dave Sumter
fuente
3
que solucionó nuestro problema con IE10
Oleg Yevteyev
1
Después de probar las otras soluciones, y la revisión se negó a instalar diciendo que no era compatible con nuestro servidor, probé esto. Es lo único que nos solucionó el problema.
Brian Surowiec
Todo lo que tenía que hacer era modificar Web.config para ver resultados inmediatos. Bravo
tuespetre
Creo que esta es la respuesta correcta. La cookie se estaba configurando para que todo se viera bien en Fiddler y ASP.NET pudo leerlo perfectamente bien (cuando configuré una página de prueba) pero Forms Auth lo ignoraba. Esta es una limitación seria de la autenticación de formularios, pero su solución hace que funcione como siempre debería haberlo hecho.
Mike Nelson
1
Esta es una solución mucho mejor y sostenible de parchear IIS.
generalnetworkerror
33

Hay una revisión disponible para este problema [1].

1) http://support.microsoft.com/kb/2600088
1) http://support.microsoft.com/kb/2600217 (reemplaza KB anterior)

Además, [2] sugiere que esto llegará a Windows Update en enero de 2012.

2) http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

Derek Slager
fuente
3
Genial, gracias por esto: promocioné el enlace al cuerpo principal de la pregunta para referencia futura.
isNaN1247
2
Confirmar. Todavía es un error a partir de ahora (08/2012). Probaré la revisión.
Eric Nguyen
12
sigue siendo un error 04/2013 - wtf?
Scott Selby
Seguimos abordando este problema a pesar de que actualizamos la revisión de KB. También agregué los archivos del navegador a la Web csproj. Ninguno pareció ayudar. Lo que sí ayudó es que agregamos un "sitio" al cuadro de diálogo Sitios de confianza. Ahora estamos redirigiendo fuera de una aplicación IFrame from marketplace en el inicio de sesión único. Supongo que hay una forma menos invasiva de manejar esta redirección, pero la documentación parece limitada al respecto.
Paul Shriner
3

Gracias por la ayuda. Funcionó no.

  1. Copié el archivo del sitio aC:\WINDOWS\microsoft.net\Framework\v2.0.50727\CONFIG\Browsers

  2. Ejecutar en el símbolo del sistema C:\WINDOWS\microsoft.net\Framework\v2.0.50727>aspnet_regbrowsers.exe -i

  3. Reinicie el IIS.

  4. Probado el sitio y funciona sin ningún error.

Gracias de nuevo por los comentarios

user2191793
fuente
2

Una actualización para la respuesta nullptr.

Hoy intenté descargar Microsoft KB2600088. Después de recibir el enlace por correo electrónico, hice clic en él y luego me llevó a la página que dice que ya no está disponible.

Pruebe esto: http://support.microsoft.com/kb/2600217

Ese enlace es un reemplazo para KB2600088 y KB2628838.

MIcrosoft .Net Framework 4.5 también está disponible ahora.

oski
fuente
Gracias por publicar esta actualización. Tenía problemas con este enlace support.microsoft.com/kb/2600088 principalmente porque IE en mi servidor no mostraba la página correctamente. Tu actualización me ayudó mucho.
Daniel Hollinrake
0

Instaló los diversos parches que todos mencionan y, por alguna razón, el problema no se resolvió.

Se instaló .NET Framework 4.5 Full y el problema desapareció.

No tiene que actualizar ningún proyecto para apuntar a 4.5. Simplemente instálelo en el servidor.

Nate Cook
fuente