2010-08-12 19 views
9

Veo casos en los que la cadena de caracteres de uso de IE tiene varias partes que informan que son versiones diferentes. Por ejemplo:¿Qué significa cuando IE informa dos versiones en UserAgent?

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 
    {B93AEBFF-7B72-44EA-B006-8CB078CC1911}; 
    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 
    .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; 
    .NET CLR 3.5.30729) 

Así que esto se afirma que es MSIE 8.0, pero también MSIE 6.0. ¿Esto significa algo especial? ¿Es un IE de acciones o hay algo especial al respecto?

Lo pregunto porque estoy viendo un comportamiento extraño con el navegador que reporta múltiples versiones, pero no con otro IE8.0 que reclama una única versión:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; 
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; 
.NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) 

No estoy seguro si el agente de usuario tiene nada que ver con eso, pero pensé en preguntar.

[Actualizar] Tenga en cuenta que no estoy codificando contra versiones de navegador en particular, solo noté esto como una diferencia entre el navegador que se comportaba de manera extraña y los que no. Quería saber qué causaría que algunos IE8.0 informaran que también son IE6.0, otros no.

+0

¿Ha intentado atacar el sitio usted mismo, ejecutando IE8 en "modo de compatibilidad"? Sospecho que esa es la causa de los encabezados doblados. –

+0

¿Qué significa "comportamiento extraño" y cómo se verificó su agente de usuario? http://www.user-agents.org/index.shtml?moz no muestra este agente de usuario en particular y parece no válido.Sin embargo, el agente de usuario se puede sobrescribir en las preferencias o en el registro (consulte http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx). El "{B93AEBFF-7B72-44EA-B006-8CB078CC1911}" en su agente de usuario me hace pensar que algo está borked en su máquina. –

+0

Obtener el agente de uso a través de http://www.supportdetails.com/ y otro sitio que no recuerdo. Esto es de navegadores de clientes (no los nuestros), así que no puedo estar seguro, pero dudo seriamente de que los usuarios hayan interferido con el registro. Este es el segundo que he visto con múltiples versiones de IE (el otro era un MSIE7.0 que también incluía MSIE6.0). Comportamiento extraño: en este caso se trata de un evento jquery .change que no se activa cuando se espera (cuando el usuario selecciona algo nuevo en un menú desplegable). Modo de compatibilidad: buen punto, lo intentaré cuando tenga acceso a un cuadro de Windows. También sucedió en IE7. – Parand

Respuesta

1

Las personas comienzan a codificar contra las versiones y luego todas las futuras cadenas de agente de usuario deben mantener esa versión en su cadena o, de lo contrario, las cosas dejan de funcionar.

código Nunca a la cadena de agente de usuario, código de capacidades: Respuesta

http://kangax.github.io/cft/

+2

nunca publique enlaces puros, no son inmortales :) – dit

+0

@dit He actualizado el enlace. Siéntase libre de tomar lo que crea que es importante y actualice la respuesta –

+0

Es bueno archivar primero los enlaces en http: // archive. es o http://archive.org y luego publique _that_ link, posiblemente junto con el original. Pero creo que lo que + dit está logrando es que debas poner parte de la información (relevante) del enlace en tu publicación. – RastaJedi

6

de Lou es correcta, pero voy a ampliar en él.

Las cadenas de agente de usuario están disponibles para el código JavaScript que se ejecuta en una página web. Desafortunadamente, es una práctica común (y mala) entre los desarrolladores web comprobar la cadena del agente de usuario para realizar mejoras o soluciones alternativas específicas del navegador.

Cuando se introdujeron nuevos navegadores, con capacidades mejoradas, sus desarrolladores se dieron cuenta de que muchos sitios web no funcionaban o funcionaban de forma degradada, porque las comprobaciones del agente de usuario se realizaban incorrectamente y tomaban rutas incorrectas en el código. Esto llevó a los desarrolladores de navegadores a modificar sus cadenas de agente de usuario para que se tome una ruta correcta. Esto llevó a la situación actual, donde cada navegador se hace pasar por Mozilla y, en general, las cadenas de agente de usuario son un desastre.

Por lo tanto, es muy posible que un sitio web que ve que se está comportando mal esté realizando un control de agente de usuario y no lo haga correctamente. Como dijo Lou, el código de JavaScript no debe tratar de analizar el agente de usuario (que es una forma muy frágil de probar un navegador y es muy probable que rompa con las versiones futuras del navegador), sino que debe verificar las capacidades del navegador. La biblioteca popular de JavaScript actual (como jQuery) lo hace de la manera correcta (una razón más para usarlos) pero aún sucede que el código JavaScript escrito a medida intentará usar la cadena de agente de usuario.

+1

Creo que Lou y tú pueden estar malinterpretando lo que dice. Él no está hablando de Mozilla 4.0 seguido del IE. Obtiene dos agentes de usuario completamente separados de una conexión, como si alguien pegase uno tras otro. Eso es bastante anormal. –

+0

Especialmente con la parte "{B93AEBFF-7B72-44EA-B006-8CB078CC1911}". – RastaJedi

1

La versión 6.0 está realmente dentro de los paréntesis de la versión 8.0. (Por supuesto, ninguno es realmente válido de acuerdo con la gramática HTTP, pero prácticamente nadie lo trata como una cadena estructurada en estos días.)

Esta publicación parece ser el único resultado para B93AEBFF-7B72-44EA-B006-8CB078CC1911 que es sospechoso

+0

Oh wow, antes de señalar eso (sobre el hecho de que estaba entre paréntesis), realmente pensé que se trataba de dos agentes de usuario separados. Entonces parece que realmente es solo uno; No creo que los demás se dieran cuenta de eso tampoco. – RastaJedi

Cuestiones relacionadas