HTTP_USER_AGENT y navigator.userAgent no son los mismos, ¿alguna idea?

Yo uso Javascript en el cliente, obtengo navigator.userAgent, devoluciones:

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; HPNTDF; .NET4.0C; .NET4.0E)

usar C # Request.ServerVariables["HTTP_USER_AGENT"], devoluciones:

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Como puede ver, es IE :(.

IE siempre hago esto, ¿o solo yo? ¿Cómo conseguir el mismo valor?

PS, Probé esto incluso en IIS local, mismos resultados

preguntado el 01 de febrero de 12 a las 22:02

¿Recibiste una respuesta para esto? -

NO. Es simplemente diferente, en IE. No tengo idea de por qué, especialmente suceden muchas recargas (no el primer golpe). -

1 Respuestas

La cadena de agente de usuario en Internet Explorer nueve y superior casi siempre diferirá entre la versión enviada en la solicitud HTTP y la obtenida a través de navigator.userAgent. Esto se debe a los llamados tokens de características en la cadena. Los antecedentes de esto se explican aquí: http://msdn.microsoft.com/en-us/library/ms537503%28v=vs.85%29.aspx

Desde el documento msdn:

Las versiones anteriores de Internet Explorer incluían tokens de funciones definidos mediante las claves de pre-plataforma y post-plataforma que forman parte de la cadena de usuario-agente durante el proceso de negociación HTTP. Con el tiempo, esto dio lugar a cadenas de agente de usuario demasiado largas, lo que a su vez creó problemas para ciertos servidores web. Los problemas generalmente aparecían cuando las cadenas de agente de usuario tenían más de 256 caracteres. A partir de Internet Explorer 9, la cadena de agente de usuario ya no incluye tokens de características durante la negociación HTTP. Los tokens de características se incluyen en el valor devuelto por la propiedad userAgent del objeto del navegador. Las aplicaciones que se basan en el comportamiento anterior deben modificarse en consecuencia.

Debe decidir cuál desea utilizar en su aplicación. No hay forma de "sincronizarlos". El obtenido a través de Javascript debe contener más información ...

Respondido 26 ago 15, 17:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.