web-dev-qa-db-fra.com

Internet Explorer 11 désactive "l'affichage des sites intranet en mode compatibilité" via la balise META ne fonctionne pas.

Je travaille sur un site Web intranet depuis plus de 6 mois Si j’utilisais les balises méta ci-dessous html5 doctype et la compatibilité Edge pour forcer Internet Explorer à ne pas imiter une version de navigateur plus ancienne, cela a fonctionné correctement.

<!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 raison pour laquelle je le faisais de cette façon est que l'endroit où je travaille utilise un paramètre de stratégie pour activer l'affichage de compatibilité pour tous les sites intranet, et cette approche utilisant le paramètre Edge a fonctionné dans Internet Explorer 9.

Intranet site compatibility view setting

Il y a plus d'un mois, j'ai été mis à niveau vers Internet Explorer 11 et le site fonctionnait toujours comme prévu.

Aujourd'hui, cela a cessé de fonctionner comme prévu, je ne peux le dire avec certitude, mais je pense que la stratégie qui force l'affichage de la compatibilité n'a pas été activée dans IE11 et qu'elle l'est maintenant ... et depuis que cela a été activé, la balise méta de compatibilité n'est plus fait ce qui est attendu, et ce site est en cours d’exécution en mode Entreprise, qui émule IE8.

Est-ce que quelqu'un sait comment résoudre ce problème et forcer IE11 à être utilisé sur un site intranet lorsque la compatibilité "Mode entreprise" est appliquée? et ne peut pas être désactivé via les paramètres du navigateur?

MODIFIER

Je viens d'essayer d'ajouter un en-tête personnalisé dans mon web.config, comme expliqué dans cette réponse https://stackoverflow.com/a/18257208/98706

et cela n’a pas fonctionné pour moi. Je reçois toujours le message ci-dessous dans la console de la barre d’outils pour les développeurs. 

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

C'est comme si la version 8 était traitée comme la Edge lorsque ce paramètre de compatibilité intranet est activé dans IE11. 

Cet article: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode Explique bien, je ne l'ai pas encore essayé de définir cet en-tête via le code et nos utilisateurs n’ont pas accès à la modification des paramètres de leur navigateur. Aucune des autres modifications n’a encore fonctionné.

METTRE &AGRAVE; JOUR

S'il vous plaît voir mon commentaire sur ce post sur quelle est la différence entre le mode entreprise et le mode de compatibilité, car il est important.

90
Pricey

Assure-toi:

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

est la première balise <meta> sur votre page, sinon IE risque de ne pas la respecter.

Sinon, le problème peut être que IE utilise Mode entreprise pour ce site Web:

  • Votre question mentionne que la console affiche: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Dans ce cas, vous devrez peut-être désactiver le mode entreprise (ou comme ceci ) ou le désactiver pour ce site Web à partir du menu Outils de IE.
  • Cependant, le mode Entreprise devrait en théorie être remplacé par la balise X-UA-Compatible, mais IE pourrait avoir un bogue ...
84
sparrowt

Ce problème est généralement causé par l'URL du site Web/de l'intranet placé dans l'un des éléments suivants:

  • Liste des modes de compatibilité
  • Zone intranet Internet Explorer
    (avec Afficher les sites intranet en mode d'affichage de compatibilité paramètre activé)
  • Liste du mode entreprise

Sur les réseaux d'entreprise, ces paramètres d'affichage de compatibilité sont souvent contrôlés de manière centralisée via stratégie de groupe. Dans votre cas, mode entreprise semble être le coupable.

 IE 11 Enterprise Mode

Malheureusement, définir META X-UA-Compatiblene remplacera pas cela.

Pour les utilisateurs finaux

Parfois, la seule façon pour les utilisateurs finaux de contourner ce problème consiste à appuyer sur la touche F12 et à modifier le Mode Document sous le Émulation Tab. Toutefois, ce paramètre n'est pas permanent et peut revenir lorsque les outils de développement sont fermés.

Vous pouvez également essayer d'exclure votre site de la zone Intranet. Toutefois, la liste des domaines appartenant à la zone Intranet est généralement également contrôlée par la stratégie de groupe. Par conséquent, les chances que cela fonctionne sont minces.

Pour voir la liste des domaines appartenant à la zone Intranet, allez à:

Outils -> Options Internet -> Sécurité -> Sites -> Avancés

Si la liste contient votre sous-domaine et est grisée, vous ne pourrez pas ignorer l'affichage de compatibilité tant que votre administrateur réseau ne vous l'a pas autorisé.

Vous devez vraiment contacter votre administrateur réseau pour autoriser la modification des paramètres d'affichage de compatibilité dans la stratégie de groupe.

Pour les administrateurs du réseau

Le chargement du site Web avec les outils de développement ouverts (F12) indique souvent la raison pour laquelle IE passe à un mode plus ancien.

Les 3 paramètres mentionnés ci-dessus sont généralement contrôlés via la stratégie de groupe, bien qu'ils puissent parfois être remplacés sur les ordinateurs des utilisateurs.

Si (mode entreprise} _ est le problème (comme cela semble être le cas pour l'affiche originale), les deux articles suivants pourraient être utiles:

17
rustyx

Pour ceux qui construisent un projet ASP.NET MVC, veillez à ajouter les éléments suivants:

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

tag dans votre page de mise en page (modèle). Je viens de passer deux heures à déboguer et à peaufiner, pour me rendre compte que je n'avais ajouté que cette balise méta dans mes pages enfants. Dès que je l'ai ajouté à ma page de présentation, le navigateur s'est parfaitement chargé en mode Edge.

5
Jason Marsell

La réponse marquée est la bonne. Cependant, Pricey, vous devriez faire un suivi à ce sujet avec vos groupes AD et vos administrateurs de bureau. Ils utilisent mal la liste de sites IE11 Enterprise Mode. Microsoft n'a pas l'intention de l'utiliser pour tous les sites intranet d'une organisation. Ce serait propager le paramètre existant "rendre tous les sites intranet en mode de compatibilité" qui constitue le fléau de l'avancement des sites Web d'entreprise dans le monde entier. 

Il est conçu pour être implémenté en tant que "liste noire", avec la poignée de sites nécessitant un mode de navigateur hérité répertorié dans la liste du mode Entreprise avec les exigences de rendu spécifiées. Tous les autres sites de votre organisation sont ensuite libérés pour utiliser Edge. Les personnes de votre entreprise qui l'ont implémenté avec tous les sites intranet inclus au départ ont complètement mal compris la manière dont le mode Entreprise doit être implémenté.

3
ch1nmuzak

C'est un vieux problème avec de bonnes informations. Mais ce que je viens de découvrir, c’est que l’utilisation d’un nom de domaine complet désactive le mode Compat dans IE 9 - 11 . Exemple. J'ai le problème de compat avec
http: // lrmstst01: 8080/JavaWeb/login.do
mais les problèmes disparaissent avec
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: Le .int fait partie de notre domaine interne

2
Dean P

La question est un peu ancienne mais je viens de résoudre un problème très similaire. Nous avons plusieurs sites intranet ici, y compris celui dont je suis responsable, et les autres nécessitent le mode de compatibilité ou ils ne fonctionnent plus. Pour cette raison, les règles de site par défaut IE sont en mode de compatibilité sur les sites intranet. Je suis en train de mettre à jour mes propres affaires et n'en ai plus besoin; En fait, certaines des fonctionnalités que j'essaie d'utiliser ne semblent pas bien en mode compat. J'utilise la balise meta IE-Edge comme vous.

IE suppose que les sites Web sans adresse complète sont des intranets et agit en conséquence. Dans cet esprit, j'ai simplement modifié les liaisons dans IIS pour n'écouter que l'adresse pleinement qualifiée, puis j'ai créé un site Web factice qui écoutait l'adresse non qualifiée. La seconde redirige tout le trafic vers l’adresse pleinement qualifiée, faisant croire à IE qu’il s’agit d’un site externe. Le rendu du site avec ou sans la case Mode de compatibilité sur les sites intranet est coché. 

1
Mike Anderson

J'ai résolu ce problème en redirigeant l'utilisateur vers le nom de domaine complet du serveur hébergeant l'intranet.

IE utilise probablement le pire algorithme du monde pour détecter les sites "intranet" ... en effet, spécifier server.domain.tld résout le problème pour moi.

Oui, vous avez bien lu, IE détecte les sites intranet non par leur adresse IP privée, comme le ferait tout développeur qui aurait entendu parler de TCP/IP, non par la partie "Host" de l'URL partie de domaine, doit être interne.

Effrayant de connaître les développeurs IE ne comprend pas les concepts TCP/IP les plus élémentaires.

Notez que c'était chez un grand client d'entreprise, les amener à changer GPO pour vous, c'est comme essayer de déplacer les Alpes à l'est de 4 mètres, cela ne se produira pas.

0
thecarpy

Ajoutez la propriété ci-dessous dans le fichier web.config pour les sites IIS. Cela a fonctionné pour moi sur mon intranet dans IE11.

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

Déplacez-le vers la zone Sites de confiance en l'ajoutant à une liste de sites de confiance ou à un paramètre local. Cela le fera sortir de la zone Intranet et ne sera pas rendu dans Compat. Vue.

0
Greg C.