Internet Explorer 11 deshabilita "mostrar sitios de intranet en vista de compatibilidad" a través de la metaetiqueta no funciona


100

He estado trabajando en un sitio web de intranet durante más de 6 meses donde he estado usando la siguiente doctypemetaetiqueta de compatibilidad con html5 y edge para forzar a Internet Explorer a no emular una versión anterior del navegador, y esto ha funcionado bien.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

La razón por la que lo estaba haciendo de esta manera es porque el lugar donde trabajo usa una configuración de política para habilitar la vista de compatibilidad para todos los sitios de la intranet, y este enfoque que usa la EDGEconfiguración ha funcionado en Internet Explorer 9.

Configuración de la vista de compatibilidad del sitio de intranet

Hace más de un mes me actualizaron a Internet Explorer 11 y el sitio todavía funcionaba como se esperaba.

Hoy esto dejó de funcionar como se esperaba, no puedo decirlo con certeza, pero creo que la política que fuerza la vista de compatibilidad no estaba habilitada en IE11 y ahora lo está ... y como esto se habilitó, la metaetiqueta de compatibilidad ya no está haciendo lo que se espera, y este sitio se está ejecutando en el modo Enterprise que emula IE8.

¿Alguien sabe cómo solucionar este problema y forzar el uso de IE11 en un sitio de intranet cuando se aplica el "modo de empresa" de compatibilidad? y no se puede desactivar a través de la configuración del navegador?

EDITAR

Acabo de intentar agregar un encabezado personalizado en mi web.config como se explica en esta respuesta https://stackoverflow.com/a/18257208/98706

y esto no funcionó para mí, todavía recibo el siguiente mensaje en la consola de la barra de herramientas del desarrollador de

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

Es como si la versión 8 estuviera siendo tratada como la edge cuando esta configuración de compatibilidad de intranet está habilitada en IE11.

Esta publicación: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode explica esto bien, todavía no he intentado configurar este encabezado mediante código y nuestros usuarios no tienen acceso para cambiar la configuración de su navegador. Ninguno de los otros cambios ha funcionado todavía.

ACTUALIZAR

Consulte mi comentario en esta publicación sobre cuál es la diferencia entre el modo Enterprise y el modo de compatibilidad, porque es importante.


El modo de empresa es diferente de la vista de compatibilidad, consulte stackoverflow.com/a/26463309/98706 para conocer las formas de deshabilitarlo, pero en mi caso no es tan simple como poder apagarlo, quería anularlo para sitios de intranet específicos usando una metaetiqueta pero esto no funcionó, no lo he vuelto a intentar porque nuestros sitios ahora están en una lista blanca.
Caro

Respuestas:


93

Asegurarse:

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

es el primero <meta> etiqueta de su página; de lo contrario, es posible que IE no la respete.

Alternativamente, el problema puede ser que IE esté usando el Modo de empresa para este sitio web:

  • Su pregunta mencionó que la consola muestra: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Si es así, es posible que deba deshabilitar el modo de empresa (o así ) o apagarlo para ese sitio web desde el menú Herramientas en IE.
  • Sin embargo , en teoría, el Modo de empresa debería ser anulado por la etiqueta X-UA-Compatible, pero IE podría tener un error ...

Sí, ya lo he hecho desde entonces, lamentablemente no funcionó :(
Caro

Puede ser que el modo de empresa esté
activado

2
El "Modo de empresa" y la "Vista de compatibilidad" son diferentes, aunque similares. Incluso si "Mostrar sitios de intranet en Vista de compatibilidad" está marcado, la etiqueta X-UA-Compatible debería anular esto. Sin embargo, el modo de empresa puede anular eso ... ¿ve el icono del modo de empresa ( media.askvg.com/articles/images5/… ) cuando está en su sitio?
gorrión

1
Además, ¿qué dice si presiona F12 y mira la pestaña de emulación? Debería decirle por qué está usando el modo de documento. Creo que estás usando el modo Enterprise, no la vista de compatibilidad.
gorrión

19
Esto es tan! @ # $ Molesto, que desperdicia cientos de miles de horas de desarrolladores web en todo el mundo.
Sam Watkins

19

Este problema generalmente se debe a que la URL del sitio web / intranet está ubicada en uno de:

  • Lista de modos de compatibilidad
  • Zona de intranet de Internet Explorer
    (con Mostrar sitios de intranet en la configuración de Vista de compatibilidad habilitada)
  • Lista de modos de empresa

En las redes corporativas, esta configuración de vista de compatibilidad a menudo se controla de forma centralizada a través de la política de grupo . En su caso, el modo de empresa parece ser el culpable.

Modo de empresa IE 11

Desafortunadamente, configurar META X-UA-Compatible no anulará esto.

Para usuarios finales

A veces, la única forma de que los usuarios finales anulen esto es presionar F12 y cambiar el Modo de documento en Emulación. pestaña . Sin embargo, esta configuración no es permanente y puede revertirse una vez que se cierren las herramientas de desarrollo.

También puede intentar excluir su sitio de la zona de Intranet. Pero la lista de dominios que pertenecen a la zona de Intranet también suele estar controlada por la política de grupo, por lo que las posibilidades de que esto funcione son escasas.

Para ver la lista de dominios que pertenecen a la zona de Intranet, vaya a:

Herramientas -> Opciones de Internet -> Seguridad -> Sitios -> Avanzado

Si la lista contiene su subdominio y está atenuada, no podrá anular la vista de compatibilidad hasta que su administrador de red lo permita.

Realmente necesita ponerse en contacto con su administrador de red para permitir cambiar la configuración de la vista de compatibilidad en la política de grupo.

Para administradores de red

La carga del sitio web con las herramientas de desarrollo abiertas (F12) a menudo informará la razón por la que IE está cambiando a un modo anterior.

Las 3 configuraciones mencionadas anteriormente generalmente se controlan a través de la Política de grupo, aunque a veces se pueden anular en las máquinas de los usuarios.

Si el problema es el modo de empresa (como parece ser el caso del póster original), los dos artículos siguientes pueden ser útiles:


Amplié su gran respuesta con algunos detalles más que descubrí durante una investigación reciente. Espero que esté bien.
Simon East

8

Para aquellos que están construyendo un proyecto ASP.NET MVC, asegúrese de agregar:

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

etiqueta en su página de Diseño (plantilla). Pasé dos horas depurando y ajustando, solo para darme cuenta de que solo había agregado esa metaetiqueta en mis páginas secundarias. Tan pronto como lo agregué a mi página de diseño, el navegador se cargó perfectamente en modo EDGE.


Mi problema tenía que ver con un nuevo modo Enterprise en IE11 que obliga al navegador a emular IE8. No es lo mismo que el modo de compatibilidad, que es lo que se usa para anular esta metaetiqueta. Estaba usando esto correctamente.
Caro

Mi comentario estaba destinado a ayudar a otros con los mismos síntomas, que están construyendo sitios en ASP.NET MVC. No me estaba dirigiendo a ti, específicamente.
Jason Marsell

La metaetiqueta también funcionará (para problemas del modo de compatibilidad, no del modo Enterprise) para sitios que no son .NET / MVC, por cierto, no es específica de ASP.NET
Dan Harris

4

La respuesta marcada es la correcta. Sin embargo, Pricey, debería hacer un seguimiento de esto con sus grupos de administración de escritorio y de AD. Están haciendo un mal uso de la lista de sitios de IE11 Enterprise Mode. Microsoft NO tiene la intención de que se use para todos los sitios de intranet dentro de una organización. Eso sería propagar la configuración existente de "renderizar todos los sitios de intranet en modo de compatibilidad" que es la pesadilla del avance de los sitios web corporativos en todo el mundo.

Está destinado a implementarse como una "lista negra", con un puñado de sitios que realmente requieren un modo de navegador heredado en la lista del modo de empresa con sus requisitos de representación especificados. Todos los demás sitios de su organización quedan libres para usar Edge. Las personas de su organización que lo implementaron con todos los sitios de intranet incluidos para empezar han entendido completamente mal cómo se debe implementar el Modo de empresa.


Sí, definitivamente deberían estar haciendo eso, pero desafortunadamente no tengo nada que decir al respecto, pero se les ha planteado.
Caro

1

La pregunta es un poco vieja pero acabo de resolver un problema muy similar. Tenemos varios sitios de intranet aquí, incluido el que soy responsable, y los otros requieren un modo de compatibilidad o se rompen. Por esa razón, las reglas del sitio establecen el modo de compatibilidad predeterminado de IE en los sitios de la intranet. Estoy actualizando mis propias cosas y ya no las necesito; de hecho, algunas de las funciones que intento utilizar no se ven bien en el modo de compatibilidad. Estoy usando la etiqueta meta IE-Edge como tú.

IE asume que los sitios web sin la dirección completa son intranet y actúa en consecuencia. Con eso en mente, simplemente modifiqué los enlaces en IIS para escuchar solo la dirección totalmente calificada, luego configuré un sitio web ficticio que escuchó la dirección no calificada. El segundo redirige todo el tráfico a la dirección totalmente calificada, lo que hace que IE crea que es un sitio externo. El sitio se muestra correctamente con o sin la casilla Modo de compatibilidad en sitios de intranet marcada.


consulte: stackoverflow.com/questions/2518256/… si tiene acceso a web.config.
fontophilic

Vi esa pregunta antes, pero creo que confundí la línea de encabezado HTTP con la línea META y pensé que ya lo había probado. Funcionó bien una vez que lo arreglé. Gracias por señalarme de nuevo.
Mike Anderson

Intenté aplicar la misma configuración de compatibilidad EDGE en la configuración web y no funcionó para mí, la única forma que encontré para que esto funcione es solicitar que nuestros sitios web específicos se agreguen a una lista blanca para que se ignoren en el nuevo Modo IE11 Enterprise, que parece ser algo diferente al modo de compatibilidad. Esta no es de ninguna manera una buena solución para mí debido a los bucles que tengo que atravesar para hacerlo todo el tiempo.
Caro

Parece que tomaste el mismo camino que yo. Hay dos cosas que tenía que hacer. 1 era el ajuste EDGE en la etiqueta META de la página. Es posible que pueda hacer esto en web.config (o no; no lo sé) pero lo hice en la página maestra del sitio. El otro fue agregar el encabezado HTTP personalizado a web.config.
Mike Anderson

1

Este es un viejo problema con buena información. Pero lo que acabo de descubrir es que el uso de un FQDN desactiva el modo Compat en IE 9-11. Ejemplo. Tengo el problema de compatibilidad con
http: // lrmstst01: 8080 / JavaWeb / login.do
pero los problemas desaparecen con
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: El .int es parte de nuestro dominio interno


Esos enlaces no son válidos. Se utilizan como ejemplo de una URL con solo un nombre de computadora frente a una con un FQDN.
Dean P

2
Consejo profesional: Example.com existe solo para este propósito
Básico

Esto sigue siendo un problema y este comentario no aporta nada a la solución.
Diana

0

Muévalo a la zona Sitios de confianza agregándolo a una lista de Sitios de confianza o a una configuración local. Esto lo sacará de Intranet Zone y no se procesará en Compat. Ver.


PD: sé que esto funciona porque es lo que estamos haciendo en mi empresa para los productos más nuevos basados ​​en navegador que no están escritos con etiquetas X-UA para hacer cumplir la representación de la manera que ellos quieren.
Greg C.

Dado que es probable que se trate de una configuración para toda la empresa, su respuesta debería aplicarse a la máquina de cada usuario, lo que no es lo ideal.
MattD

0

Agregue la siguiente propiedad en el archivo web.config para sitios IIS. Esto funcionó para mí en mi intranet en IE11.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 

Por favor, vea mi actualización sobre el boleto, el modo Enterprise y el modo de compatibilidad son 2 cosas diferentes
caro

0

Resolví este problema redirigiendo al usuario al FQDN del servidor que aloja la intranet.

IE probablemente usa el peor algoritmo del mundo para detectar sitios de "intranet" ... de hecho, especificar server.domain.tld me resuelve el problema.

Sí, lo leíste correctamente, IE detecta sitios de intranet no por dirección IP privada, como haría cualquier desarrollador que haya oído hablar de TCP / IP, no, por la parte "host" de la URL, si no tiene parte de dominio, debe ser interno.

Da miedo saber que los desarrolladores de IE no comprenden los conceptos más básicos de TCP / IP.

Tenga en cuenta que esto fue en un cliente empresarial GRANDE, lograr que cambien el GPO por usted es como intentar mover los Alpes 4 metros hacia el este, no va a suceder.


IE probablemente realiza una búsqueda de DNS y conoce la IP a partir de eso. Como es MS, probablemente podría hacer AD, pero DNS tiene más sentido.
smoore4

@SQLDBA negativo, si especifica la IP, digamos 10.0.0.1, el host NO se detecta como sitio "intranet" ... nada que ver con DNS, ¿qué quiere decir con AD? ¿Quiere decir que se conecta a AD y busca el host allí? No tiene sentido, ¿por qué haría eso? Por otra parte, son Microsoft por una razón ™.
thecarpy

0

Por lo que vale, también tuve el problema en IE11:

  • Estaba no en el modo de empresa.
  • Se marcó la casilla "Mostrar sitios de intranet en Vista de compatibilidad".
  • Tenía todas las configuraciones <!DOCTYPE html>y IE=Edgemencionadas en la pregunta.
  • El meta encabezado fue de hecho el primer elemento en el <head>elemento

Después de un tiempo, descubrí que:

  • el encabezado del agente de usuario enviado al servidor era IE7 pero ...
  • ¡el valor de JavaScript era IE11!

Encabezado HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) pero

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

Así que terminé haciendo la verificación del lado del cliente.

Y por cierto, mientras tanto, ya no se recomienda verificar el agente de usuario. Consulte https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (pero podría haber un buen caso)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.