it-swarm.com.de

Internet Explorer 11 deaktiviert "Intranetsites in Kompatibilitätsansicht anzeigen" über Metatags, die nicht funktionieren

Ich arbeite seit über 6 Monaten an einer Intranet-Website Dort habe ich den untenstehenden html5 doctype- und Edge-Kompatibilitäts-Meta-Tag verwendet, um zu erzwingen, dass Internet Explorer keine ältere Browserversion emuliert, und dies hat funktioniert.

<!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>

Der Grund, warum ich das so gemacht habe, ist der, dass der Bereich, an dem ich arbeite, eine Richtlinieneinstellung verwendet, um die Kompatibilitätsansicht für alle Intranetsites zu aktivieren, und dass dieser Ansatz mit der Einstellung Edge in Internet Explorer 9 funktioniert hat.

Intranet site compatibility view setting

Vor über einem Monat wurde ich auf Internet Explorer 11 aktualisiert und die Website funktionierte weiterhin wie erwartet.

Heute funktionierte das nicht mehr wie erwartet, ich kann es nicht mit Bestimmtheit sagen, aber ich denke, dass die Richtlinie, die die Kompatibilitätsansicht erzwingt, in IE11 nicht aktiviert wurde und jetzt ist es ... und da dies aktiviert wurde, ist das Kompatibilitäts-Meta-Tag nicht mehr was erwartet wird, und diese Site wird im Enterprise-Modus ausgeführt, der IE8 emuliert.

Kann jemand das Problem beheben und die Verwendung von IE11 auf einer Intranetsite erzwingen, wenn die Kompatibilität "Enterprise-Modus" erzwungen wird? und kann nicht über die Browsereinstellungen deaktiviert werden?

EDIT

Ich habe gerade versucht, einen benutzerdefinierten Header in meiner web.config hinzuzufügen, wie in dieser Antwort beschrieben https://stackoverflow.com/a/18257208/98706

und das hat bei mir nicht funktioniert Ich bekomme immer noch die untenstehende Meldung in der Entwickler-Symbolleisten-Konsole von 

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

Es ist, als würde Version 8 als Edge behandelt, wenn diese Intranet-Kompatibilitätseinstellung in IE11 aktiviert ist. 

Dieser Beitrag: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode Erklärt dies gut, ich habe es noch nicht Es wurde versucht, diesen Header über Code einzustellen, und unsere Benutzer haben keinen Zugriff auf ihre Browsereinstellungen. Keine der anderen Änderungen hat bisher funktioniert.

UPDATE

In meinem Kommentar zu diesem Beitrag finden Sie den Unterschied zwischen dem Enterprise-Modus und dem Kompatibilitätsmodus, da dies wichtig ist.

90
Pricey

Stelle sicher:

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

ist das erste <meta>-Tag auf Ihrer Seite. Andernfalls wird es von IE möglicherweise nicht beachtet.

Alternativ kann das Problem sein, dass IE Enterprise Mode für diese Website verwendet:

  • Bei Ihrer Frage wurde darauf hingewiesen, dass die Konsole Folgendes anzeigt: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • In diesem Fall müssen Sie den Enterprise-Modus deaktivieren (oder wie folgt ) oder für diese Website im Menü Extras des IE deaktivieren.
  • Der Enterprise-Modus sollte sollte jedoch theoretisch vom X-UA-kompatiblen Tag überschrieben werden, aber IE kann einen Fehler enthalten.
84
sparrowt

Dieses Problem wird im Allgemeinen dadurch verursacht, dass die Website-/Intranet-URL in einer der folgenden Adressen abgelegt wird:

  • Liste der Kompatibilitätsmodi
  • Internet Explorer Intranet Zone
    (mit Intranet-Sites in der Kompatibilitätsansicht anzeigen -Einstellung aktiviert)
  • Unternehmensmodusliste

In Unternehmensnetzwerken werden diese Einstellungen für die Kompatibilitätsansicht häufig zentral über group policy gesteuert. In Ihrem Fall scheint Enterprise Mode der Täter zu sein.

 IE 11 Enterprise Mode

Leider ist die Einstellung von META X-UA-Compatiblewird nicht überschrieben dies.

Für Endbenutzer

Die einzige Möglichkeit für Endbenutzer, dies zu überschreiben, besteht manchmal darin, F12 zu drücken und den Document-Modus unter der Registerkarte Emulation zu ändern. Diese Einstellung ist jedoch nicht dauerhaft und kann nach dem Schließen der Developer Tools zurückgesetzt werden.

Sie können auch versuchen, Ihre Site aus der Intranetzone auszuschließen. Die Liste der Domänen, die zur Intranetzone gehören, wird jedoch in der Regel auch von der Gruppenrichtlinie gesteuert. Daher ist die Wahrscheinlichkeit gering, dass dies funktioniert.

Um die Liste der Domänen anzuzeigen, die zur Intranetzone gehören, gehen Sie zu:

Extras -> Internetoptionen -> Sicherheit -> Sites -> Erweitert

Wenn die Liste Ihre Subdomain enthält und ausgegraut ist, können Sie die Kompatibilitätsansicht erst dann überschreiben, wenn Ihr Netzwerkadministrator dies zulässt.

Sie müssen sich unbedingt an Ihren Netzwerkadministrator wenden, um die Einstellungen für die Kompatibilitätsansicht in der Gruppenrichtlinie ändern zu können.

Für Netzwerk-Admins

Beim Laden der Website mit geöffneten Entwicklertools (F12) wird häufig der Grund angegeben, warum IE in einen älteren Modus wechselt.

Alle drei oben genannten Einstellungen werden im Allgemeinen über Gruppenrichtlinien gesteuert, können jedoch manchmal auf Benutzercomputern überschrieben werden.

Wenn Enterprise Mode das Problem ist (wie es für das Originalposter der Fall zu sein scheint), könnten die folgenden zwei Artikel hilfreich sein:

17
rustyx

Stellen Sie für diejenigen, die ein ASP.NET MVC-Projekt erstellen, sicher, dass Sie Folgendes hinzufügen:

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

tag in Ihre Layout (Template) Seite. Ich verbrachte gerade zwei Stunden damit, zu debuggen und zu optimieren, nur um festzustellen, dass ich diesen Meta-Tag nur auf meinen untergeordneten Seiten hinzugefügt hatte. Sobald ich es zu meiner Layoutseite hinzugefügt habe, wurde der Browser perfekt im Edge-Modus geladen.

5
Jason Marsell

Die markierte Antwort ist die richtige. Allerdings, Pricey, sollten Sie dies mit Ihren AD- und Desktop-Admin-Gruppen nachholen. Sie missbrauchen die Standortliste des IE11-Unternehmensmodus. Microsoft beabsichtigt NICHT, es für alle Intranetsites innerhalb einer Organisation zu verwenden. Dies würde die bestehende Einstellung "Alle Intranetseiten im Kompatibilitätsmodus darstellen" verbreiten, die den Fluch des Aufstiegs von Unternehmenswebsites auf der ganzen Welt darstellt. 

Es soll als "schwarze Liste" implementiert werden, mit einer Handvoll Websites, für die tatsächlich ein älterer Browsermodus erforderlich ist, der in der Enterprise-Modus-Liste aufgeführt ist und deren Rendering-Anforderungen festgelegt sind. Alle anderen Sites in Ihrer Organisation werden dann zur Verwendung von Edge freigegeben. Die Mitarbeiter in Ihrer Organisation, die zunächst alle Intranetsites implementiert haben, haben völlig missverstanden, wie der Enterprise-Modus implementiert werden soll.

3
ch1nmuzak

Dies ist ein altes Problem mit einigen guten Informationen. Ich habe jedoch gerade herausgefunden, dass der Compat-Modus bei Verwendung eines FQDN in IE 9 - 11 ..__ ausgeschaltet wird. Beispiel. Ich habe das Kameraproblem mit
http: // lrmstst01: 8080/JavaWeb/login.do
aber die Probleme verschwinden mit
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
Hinweis: Die .int ist Teil unserer internen Domäne

2
Dean P

Die Frage ist etwas alt, aber ich habe gerade ein sehr ähnliches Problem gelöst. Wir haben hier mehrere Intranet-Sites, einschließlich derjenigen, für die ich verantwortlich bin, und die anderen erfordern den Kompatibilitätsmodus oder sie gehen kaputt. Aus diesem Grund setzen Site-Regeln IE standardmäßig auf den Kompatibilitätsmodus auf Intranetsites. Ich verbessere meine eigenen Sachen und brauche sie nicht mehr. Einige der Funktionen, die ich verwenden möchte, sehen im Compat-Modus nicht richtig aus. Ich benutze das Meta-IE-Edge-Tag wie Sie.

IE geht davon aus, dass Websites ohne die vollständig qualifizierte Adresse ein Intranet sind, und handeln entsprechend. In diesem Sinne habe ich nur die Bindungen in IIS geändert, um nur die vollständig qualifizierte Adresse zu hören, und dann eine Dummy-Website eingerichtet, die auf die nicht qualifizierte Adresse lauschte. Die zweite leitet den gesamten Datenverkehr an die vollständig qualifizierte Adresse um, wodurch IE der Meinung ist, dass es sich um eine externe Site handelt. Die Site wird korrekt mit oder ohne das Kontrollkästchen Kompatibilitätsmodus für Intranetsites dargestellt. 

1
Mike Anderson

Ich habe dieses Problem gelöst, indem ich den Benutzer an den vollqualifizierten Domänennamen des Servers weiterleitete, der das Intranet hostet.

Der IE verwendet wahrscheinlich den weltweit schlechtesten Algorithmus zum Erkennen von "Intranet" -Seiten ... In der Tat löst die Angabe server.domain.tld das Problem für mich.

Ja, Sie haben das richtig gelesen. IE erkennt Intranetsites nicht anhand der privaten IP-Adresse, wie es jeder Entwickler, der von TCP/IP gehört hat, oder nicht durch den "Host" -Teil der URL, wenn er nein hat Domain-Teil, muss intern sein.

Unheimlich zu wissen, dass die IE -Devs die grundlegendsten TCP/IP-Konzepte nicht verstehen.

Beachten Sie, dass dies bei einem GROSSEN Unternehmenskunden der Fall war. Wenn Sie sie dazu bringen, GPO für Sie zu ändern, versuchen Sie, die Alpen um 4 Meter in östliche Richtung zu bewegen.

0
thecarpy

Für das, was es wert ist, hatte ich das Problem auch in IE11:

  • Ich war nicht im Enterprise-Modus.
  • Die Option "Intranetsites in der Kompatibilitätsansicht anzeigen" wurde aktiviert.
  • Ich hatte alle in der Frage erwähnten Einstellungen für <!DOCTYPE html> Und IE=Edge
  • Der Meta-Header war in der Tat das 1. Element im Element <head>

Nach einer Weile fand ich heraus, dass:

  • der an den Server gesendete Benutzeragenten-Header war IE7 , aber ...
  • der JavaScript-Wert war IE11!

HTTP-Header :

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

JavaScript :

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

Also habe ich die Überprüfung auf der Client-Seite durchgeführt.

Außerdem wird das Überprüfen des Benutzeragenten nicht mehr empfohlen. Siehe https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (aber es könnte einen guten Fall geben)

0
Yann Vo

Fügen Sie die folgende Eigenschaft in die Datei web.config für IIS - Sites ein. Dies hat für mich in meinem Intranet in IE11 funktioniert.

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

Verschieben Sie es in die Zone der vertrauenswürdigen Sites, indem Sie es entweder einer Liste vertrauenswürdiger Sites oder einer lokalen Einstellung hinzufügen. Dadurch wird es aus der Intranetzone entfernt und in Compat nicht gerendert. Aussicht.

0
Greg C.