Internet Explorer 11 disabilita la "visualizzazione dei siti intranet in visualizzazione compatibilità" tramite meta tag non funzionante


100

Ho lavorato su un sito Web intranet per oltre 6 mesi utilizzando il seguente doctypemeta tag html5 e compatibilità edge per forzare Internet Explorer a non emulare una versione precedente del browser, e questo ha funzionato bene.

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

Il motivo per cui lo stavo facendo in questo modo è perché il luogo in cui lavoro utilizza un'impostazione dei criteri per abilitare la visualizzazione della compatibilità per tutti i siti intranet e questo approccio che utilizza l' EDGEimpostazione ha funzionato in Internet Explorer 9.

Impostazione della visualizzazione della compatibilità del sito Intranet

Più di un mese fa sono stato aggiornato a Internet Explorer 11 e il sito funzionava ancora come previsto.

Oggi ha smesso di funzionare come previsto, non posso dirlo con certezza ma penso che la policy che forza la visualizzazione della compatibilità non sia stata abilitata in IE11 e ora lo è ... e da quando è stato abilitato il meta tag di compatibilità non lo è più facendo ciò che è previsto, e questo sito viene eseguito in modalità Enterprise che emula IE8.

Qualcuno sa come risolvere questo problema e forzare l'utilizzo di IE11 su un sito intranet quando viene applicata la compatibilità "modalità Enterprise"? e non può essere disabilitato tramite le impostazioni del browser?

MODIFICARE

Ho appena provato ad aggiungere un'intestazione personalizzata nel mio web.config come spiegato in questa risposta https://stackoverflow.com/a/18257208/98706

e questo non ha funzionato per me, ricevo ancora il messaggio seguente nella console della barra degli strumenti per sviluppatori di

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

È come se la versione 8 fosse considerata come edgequando questa impostazione di compatibilità intranet è abilitata in IE11.

Questo post: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode lo spiega bene, non ho ancora provato a impostare questa intestazione tramite codice e i nostri utenti non hanno accesso per modificare le impostazioni del browser .. nessuna delle altre modifiche ha ancora funzionato.

AGGIORNARE

Si prega di vedere il mio commento su questo post su quale sia la differenza tra la modalità Enterprise e la modalità di compatibilità, perché è importante.


La modalità Enterprise è diversa dalla visualizzazione compatibilità, vedere stackoverflow.com/a/26463309/98706 per i modi per disabilitarla, ma nel mio caso non è così semplice come disattivarla, volevo sovrascriverla per specifici siti intranet utilizzando un meta tag ma non ha funzionato, non ho riprovato perché i nostri siti sono ora in una whitelist.
Costoso

Risposte:


93

Assicurarsi:

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

è il primo <meta>tag sulla tua pagina, altrimenti IE potrebbe non rispettarlo.

In alternativa, il problema potrebbe essere che IE utilizza la modalità Enterprise per questo sito Web:

  • La tua domanda ha menzionato che la console mostra: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • In tal caso, potrebbe essere necessario disabilitare la modalità aziendale (o simile ) o disattivarla per quel sito Web dal menu Strumenti in IE.
  • Tuttavia, la modalità Enterprise dovrebbe in teoria essere sovrascritta dal tag X-UA-Compatible, ma IE potrebbe avere un bug ...

Sì, l'ho già fatto da allora, purtroppo non ha funzionato :(
Costoso

Potrebbe essere che la modalità Enterprise sia attiva per quel sito Web (in base alla tua domanda) ... Ho aggiornato la mia risposta, fammi sapere se questo aiuta
sparrowt

2
"Modalità Enterprise" e "Visualizzazione Compatibilità" sono diverse, sebbene simili. Anche se "Visualizza siti intranet in Visualizzazione Compatibilità" è selezionato, il tag X-UA-Compatible dovrebbe sovrascriverlo. Tuttavia, la modalità Enterprise potrebbe sovrascriverla ... vedi l'icona della modalità Enterprise ( media.askvg.com/articles/images5/… ) quando sul tuo sito?
sparrowt

1
Inoltre cosa dice se premi F12 e guardi sulla scheda di emulazione? Dovrebbe dirti perché sta usando la modalità documento. Penso che stai premendo la modalità Enterprise, non la visualizzazione di compatibilità.
sparrowt

19
È così! @ # $ Fastidioso, sprecando centinaia di migliaia di ore di sviluppatori web in tutto il mondo.
Sam Watkins

19

Questo problema è generalmente causato dall'URL del sito Web / intranet inserito in uno di:

  • Elenco delle modalità di compatibilità
  • Area Intranet di Internet Explorer
    (con l' impostazione Visualizza siti intranet in Visualizzazione Compatibilità abilitata)
  • Elenco modalità Enterprise

Sulle reti aziendali, queste impostazioni di visualizzazione della compatibilità sono spesso controllate centralmente tramite criteri di gruppo . Nel tuo caso, la modalità Enterprise sembra essere il colpevole.

Modalità Enterprise di IE 11

Sfortunatamente l'impostazione di META X-UA-Compatible non sovrascriverà questo.

Per gli utenti finali

A volte l'unico modo per gli utenti finali di sovrascriverlo è premere F12 e modificare la modalità documento nella scheda Emulazione . Tuttavia, questa impostazione non è permanente e potrebbe essere ripristinata una volta chiusi gli Strumenti per sviluppatori.

Puoi anche provare a escludere il tuo sito dalla zona Intranet. Ma l'elenco dei domini che appartengono alla zona Intranet è solitamente controllato anche dai criteri di gruppo, quindi le possibilità che funzionino sono scarse.

Per vedere l'elenco dei domini che appartengono alla zona Intranet, vai su:

Strumenti -> Opzioni Internet -> Sicurezza -> Siti -> Avanzate

Se l'elenco contiene il tuo sottodominio ed è disattivato, non sarai in grado di sovrascrivere la visualizzazione della compatibilità finché l'amministratore di rete non lo consente.

È davvero necessario contattare l'amministratore di rete per consentire la modifica delle impostazioni di visualizzazione della compatibilità nei criteri di gruppo.

Per gli amministratori di rete

Il caricamento del sito Web con Strumenti per sviluppatori aperti (F12) riporterà spesso il motivo per cui IE sta passando a una modalità precedente.

Tutte e 3 le impostazioni sopra menzionate sono generalmente controllate tramite Criteri di gruppo, sebbene a volte possano essere sovrascritte sui computer degli utenti.

Se il problema è la modalità Enterprise (come sembra essere il caso del poster originale), i due articoli seguenti potrebbero essere utili:


Ho ampliato la tua ottima risposta con alcuni dettagli in più che ho scoperto durante una recente ricerca. Spero che vada bene
Simon East

8

Per coloro che stanno creando un progetto ASP.NET MVC, assicurati di aggiungere:

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

tag nella tua pagina Layout (modello). Ho appena trascorso due ore a eseguire il debug e la modifica, solo per rendermi conto che avevo aggiunto solo quel meta tag nelle mie pagine figlio. Non appena l'ho aggiunto alla mia pagina di layout, il browser è stato caricato perfettamente in modalità EDGE.


Il mio problema aveva a che fare con una nuova modalità Enterprise in IE11 che costringe il browser a emulare IE8. Non è la stessa cosa della modalità compatibilità, che è ciò che questo meta tag viene utilizzato per sovrascrivere. Lo stavo usando correttamente.
Costoso

Il mio commento aveva lo scopo di assistere gli altri con gli stessi sintomi, che stanno costruendo siti in ASP.NET MVC. Non mi stavo rivolgendo a te, specificamente.
Jason Marsell

Il meta tag funzionerà (per problemi di modalità di compatibilità, non di modalità Enterprise) anche per siti non .NET / MVC, non è specifico per ASP.NET
Dan Harris

4

La risposta contrassegnata è quella corretta. Tuttavia, Pricey, dovresti dare seguito a questo con i tuoi gruppi di amministratori AD e desktop. Stanno abusando dell'elenco dei siti della modalità Enterprise di IE11. Microsoft NON intende che venga utilizzato per tutti i siti intranet all'interno di un'organizzazione. Ciò significherebbe propagare l'impostazione esistente "Visualizza tutti i siti intranet in modalità compatibilità" che è la rovina del progresso dei siti Web aziendali in tutto il mondo.

È pensato per essere implementato come una "lista nera", con la manciata di siti che effettivamente richiedono una modalità browser legacy elencata nell'elenco della modalità Enterprise con i requisiti di rendering specificati. Tutti gli altri siti dell'organizzazione vengono quindi liberati per utilizzare Edge. Le persone della tua organizzazione che l'hanno implementato con tutti i siti intranet inclusi per cominciare hanno completamente frainteso il modo in cui la modalità Enterprise deve essere implementata.


Sì, dovrebbero assolutamente farlo, ma sfortunatamente non ho voce in capitolo, ma è stato sollevato con loro.
Caro

1

La domanda è un po 'vecchia ma ho appena risolto un problema molto simile. Abbiamo diversi siti intranet qui, incluso quello di cui sono responsabile, e gli altri richiedono la modalità di compatibilità o si interrompono. Per questo motivo, le regole del sito impostano IE sulla modalità di compatibilità nei siti intranet. Sto aggiornando le mie cose e non ne ho più bisogno; infatti, alcune delle funzionalità che sto cercando di utilizzare non sembrano corrette in modalità compatibilità. Sto usando il meta tag IE-Edge come te.

IE presume che i siti Web senza l'indirizzo completo siano intranet e agisce di conseguenza. Con questo in mente, ho modificato i collegamenti in IIS per ascoltare solo l'indirizzo completo, quindi ho creato un sito Web fittizio che ascoltava l'indirizzo non qualificato. Il secondo reindirizza tutto il traffico all'indirizzo completo, facendo credere a IE che si tratti di un sito esterno. Il rendering del sito viene eseguito correttamente con o senza la casella Modalità compatibilità sui siti Intranet selezionata.


vedere: stackoverflow.com/questions/2518256/… se si dispone dell'accesso a web.config.
fontofila

Ho visto questa domanda in precedenza, ma immagino di aver scambiato la riga di intestazione HTTP per la riga META e ho pensato di averla già provata. Ha funzionato bene una volta che l'ho sistemato. Grazie per avermelo segnalato.
Mike Anderson

Ho provato ad applicare la stessa impostazione EDGE di compatibilità nella configurazione web e non ha funzionato per me, l'unico modo che ho trovato per farlo funzionare è richiedere che i nostri siti Web specifici vengano aggiunti a una lista bianca in modo che vengano ignorati dal nuovo La modalità Enterprise di IE11, che sembra essere qualcosa di diverso dalla modalità di compatibilità. Questa non è affatto una buona soluzione per me a causa dei loop che devo attraversare per farlo ogni volta.
Caro

Sembra che tu abbia seguito la stessa strada di me. Ci sono 2 cose che dovevo fare. 1 era l'impostazione EDGE nel tag META della pagina. Potresti essere in grado di farlo in web.config (o no; non lo so) ma l'ho fatto sulla pagina master del sito. L'altro era l'aggiunta dell'intestazione HTTP personalizzata a web.config.
Mike Anderson

1

Questo è un vecchio problema con alcune buone informazioni. Ma quello che ho appena scoperto è che l'utilizzo di un FQDN disattiva la modalità Compat in IE 9 - 11. Esempio. Ho il problema di compatibilità con
http: // lrmstst01: 8080 / JavaWeb / login.do
ma i problemi scompaiono con
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: .int fa parte di il nostro dominio interno


Questi collegamenti non sono validi. Sono usati come esempio di un URL con solo un nome di computer rispetto a uno con un FQDN.
Dean P

2
Suggerimento per professionisti: Example.com esiste proprio per questo scopo
Basic

Questo è ancora un problema e questo commento non aggiunge nulla alla soluzione.
Diana

0

Spostalo nell'area Siti attendibili aggiungendolo a un elenco di siti attendibili o a un'impostazione locale. Questo lo sposterà fuori dalla zona Intranet e non verrà visualizzato in Compat. Visualizza.


Ps So che funziona perché è ciò che stiamo facendo nella mia azienda per i prodotti più recenti basati su browser che non sono scritti con tag X-UA per applicare il rendering nel modo desiderato.
Greg C.

Dato che è probabile che sia un'impostazione a livello aziendale, la tua risposta dovrebbe essere applicata alla macchina di ogni utente, il che non è certo l'ideale.
MattD

0

Aggiungere la proprietà seguente nel file web.config per i siti IIS. Questo ha funzionato per me sulla mia intranet in IE11.

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

Si prega di vedere il mio aggiornamento sul biglietto, la modalità Enterprise e la modalità di compatibilità sono 2 cose diverse
Costoso

0

Ho risolto questo problema reindirizzando l'utente al nome di dominio completo del server che ospita la intranet.

IE probabilmente utilizza il peggior algoritmo al mondo per rilevare i siti "intranet" ... anzi, specificare server.domain.tld risolve il problema per me.

Sì, hai letto correttamente, IE rileva i siti intranet non dall'indirizzo IP privato, come farebbe qualsiasi sviluppatore che ha sentito parlare di TCP / IP, no, dalla parte "host" dell'URL, se non ha una parte di dominio, deve essere interni.

È spaventoso sapere che gli sviluppatori di IE non capiscono i concetti di base del TCP / IP.

Nota che questo era un cliente di una GRANDE azienda, convincerli a cambiare GPO per te è come cercare di spostare le Alpi a est di 4 metri, non succederà.


IE probabilmente esegue una ricerca DNS e conosce l'IP da quello. Poiché è MS, potrebbe probabilmente fare AD, ma DNS ha più senso.
smoore4

@SQLDBA negativo, se specifichi l'IP, diciamo 10.0.0.1, l'host NON viene rilevato come sito "intranet" ... niente a che fare con DNS, cosa intendi con AD? Vuoi dire che si connette ad AD e cerca l'host lì? Non ha senso, perché dovrebbe farlo? Poi di nuovo, sono Microsoft per un motivo ™.
carpy

0

Per quello che vale, ho avuto anche il problema in IE11:

  • Ero non in modalità Enterprise.
  • "Visualizza i siti Intranet in Visualizzazione Compatibilità" è stato verificato.
  • Avevo tutte le impostazioni <!DOCTYPE html>e IE=Edgemenzionate nella domanda
  • Il meta header era effettivamente il primo elemento <head>dell'elemento

Dopo un po 'ho scoperto che:

  • l'intestazione dell'agente utente inviata al server era IE7 ma ...
  • il valore JavaScript era IE11!

Intestazione HTTP :

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

JavaScript :

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

Quindi ho finito per fare il controllo sul lato client.

E a proposito, nel frattempo, il controllo dell'agente utente non è più consigliato. Vedi https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (ma potrebbe esserci un buon caso)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.