Internet Explorer 11は、メタタグを介して「互換性ビューにイントラネットサイトを表示する」機能を無効にします。


100

以下のhtml5 doctypeとエッジ互換メタタグを使用してInternet Explorerが古いブラウザーバージョンをエミュレートしないように強制している場合、私は6か月以上イントラネットWebサイトで作業しており、これは問題なく動作しました。

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

この方法を使用した理由は、作業場所でポリシー設定を使用してすべてのイントラネットサイトの互換表示を有効にしているためです。このEDGE設定を使用したこのアプローチはInternet Explorer 9で機能しました。

イントラネットサイト互換表示設定

1か月以上前にInternet Explorer 11にアップグレードしましたが、サイトはまだ期待どおりに機能していました。

今日、これは期待どおりに機能しなくなったので、はっきりとは言えませんが、互換性ビューを強制するポリシーがIE11で有効にされていなかったと思います...これは有効になっているため、互換性メタタグは無効になりましたこのサイトは、IE8をエミュレートするエンタープライズモードで実行されています。

これを修正し、互換性「エンタープライズモード」が適用されているときにIE11をイントラネットサイトで強制的に使用する方法を知っている人はいますか?とブラウザの設定を介して無効にすることはできませんか?

編集

この回答で説明されているように、私のweb.configにカスタムヘッダーを追加しようとしました https://stackoverflow.com/a/18257208/98706

そしてこれは私のために機能しませんでした私はまだの開発者ツールバーコンソールで以下のメッセージを受け取ります

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

edgeIE11でこのイントラネット互換性設定が有効になっている場合、バージョン8がとして扱われているようです。

この投稿:https : //www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode はこれをよく説明しています。私はまだコードでこのヘッダーを設定していないので、ユーザーにはブラウザ設定を変更するアクセス権がありません。他の変更はまだ機能していません。

更新

エンタープライズモードと互換モードの違いは重要なので、この投稿に対する私のコメントを参照してください。


エンタープライズモードは互換性ビューとは異なります。無効にする方法については、stackoverflow.com / a / 26463309/98706を参照してください。ただし、私の場合は、オフにすることができるほど簡単ではないため、特定のイントラネットサイトでオーバーライドしますメタタグを使用していますが、これは機能しませんでした。サイトがホワイトリストに登録されているため、私は再試行していません。
高価な2015

回答:


93

確認してください:

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

<meta>ページの最初のタグです。それ以外の場合、IEはそれを尊重しない場合があります。

または、IEがこのWebサイトでエンタープライズモードを使用していることが問題である可能性があります。

  • あなたの質問は、コンソールが示すことを述べました: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • その場合は、エンタープライズモード無効にする(またはこのようにする)か、IEの[ツール]メニューからそのWebサイトに対して無効にする必要がある場合があります。
  • ただし、エンタープライズモード理論的にはX-UA-Compatibleタグでオーバーライドする必要がありますが、IEにバグがある可能性があります...

はい、私はすでにこれを行っていますが、残念ながらうまくいきませんでした:(
高価な

そのウェブサイトでエンタープライズモードがオンになっている可能性があります(あなたの質問に基づいて)...私は私の答えを更新しました、それが役立つかどうか知らせてください
sparrowt

2
「エンタープライズモード」と「互換表示」は似ていますが異なります。「互換表示でイントラネットサイトを表示する」がチェックされている場合でも、X-UA-Compatibleタグはこれをオーバーライドする必要があります。ただし、エンタープライズモードで上書きされる可能性があります... サイトにあるときに、エンタープライズモードアイコン(media.askvg.com/articles/images5/…)が表示されますか?
スズメ2014年

1
また、F12キーを押してエミュレーションタブを見るとどうなりますか?ドキュメントモードを使用している理由が表示されます。互換性ビューではなく、エンタープライズモードを使用していると思います。
スパロート2014年

19
これは非常に煩わしい!@#$で、世界中の何十万時間ものWeb開発者を浪費しています。
Sam Watkins、2015

19

この問題は通常、次のいずれかに配置されているWebサイト/イントラネットURLが原因で発生します。

  • 互換モードリスト
  • Internet Explorerイントラネットゾーン
    互換表示でイントラネットサイトを表示する)設定が有効になっている)
  • エンタープライズモードリスト

企業ネットワークでは、これらの互換表示設定は、多くの場合、グループポリシーを介して集中管理されます。あなたの場合、エンタープライズモードが原因のようです。

IE 11エンタープライズモード

残念ながらMETA 設定してX-UA-Compatible も上書きされません

エンドユーザー向け

エンドユーザーがこれをオーバーライドする唯一の方法は、F12を押してエミュレーションでドキュメントモードを変更することです。キータブです。ただし、この設定は永続的なものではなく、開発者ツールを閉じると元に戻る場合があります。

イントラネットゾーンからサイトを除外することもできます。ただし、イントラネットゾーンに属するドメインのリストは通常​​、グループポリシーによっても制御されるため、この機能が使用される可能性はほとんどありません。

イントラネットゾーンに属するドメインのリストを表示するには、次の場所に移動します。

ツール->インターネットオプション->セキュリティ->サイト->詳細

リストにサブドメインが含まれていてグレー表示されている場合、ネットワーク管理者が許可するまで、互換表示を上書きすることはできません。

グループポリシーの互換表示設定の変更を許可するには、ネットワーク管理者に連絡する必要があります。

ネットワーク管理者向け

開発者ツールを開いたまま(F12)でWebサイトをロードすると、IEが古いモードに切り替わる理由が報告されることがよくあります。

上記の3つの設定はすべて、通常はグループポリシーを介して制御されますが、ユーザーマシンで上書きされることもあります。

場合エンタープライズモードは、問題(が表示されますが、元のポスターの場合のように)で、以下の二つの記事が役に立つかもしれません。


私は最近の調査で発見したいくつかの詳細であなたの素晴らしい答えを拡大しました。大丈夫だと思います。
Simon East

8

ASP.NET MVCプロジェクトを構築している人は、必ず以下を追加してください。

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

レイアウト(テンプレート)ページにタグを付けます。子ページにメタタグを追加しただけであることに気づくために、デバッグと調整に2時間費やしました。レイアウトページに追加するとすぐに、ブラウザーはEDGEモードで完全に読み込まれました。


私の問題は、ブラウザーがIE8をエミュレートするように強制するIE11の新しいエンタープライズモードに関することでした。これは互換モードとは異なります。互換モードは、このメタタグを使用してオーバーライドするものです。私はこれを正しく使用していました。
高価な2015年

私のコメントは、ASP.NET MVCでサイトを構築している同じ症状を持つ他のユーザーを支援するためのものでした。特に、私はあなたに話していませんでした。
Jason Marsell 2015年

メタタグは、.NET / MVC以外のサイトでも機能します(エンタープライズモードの問題ではなく、互換モードの問題)。ASP.NETに固有ではありません
Dan Harris

4

マークされた答えは正しいものです。ただし、Priceyは、ADおよびデスクトップ管理者グループでこれをフォローアップする必要があります。彼らはIE11エンタープライズモードサイトリストを誤用しています。Microsoftは、組織内のすべてのイントラネットサイトで使用されることをまったく意図していません。それは、世界中の企業のWebサイトの進歩の悩みの種である、既存の「互換モードですべてのイントラネットサイトをレンダリングする」設定を伝播することになります。

「ブラックリスト」として実装することを意図しており、エンタープライズモードリストにレガシーブラウザモードを実際に必要とする少数のサイトで、レンダリング要件が指定されています。組織内の他のすべてのサイトは解放され、Edgeを使用できるようになります。はじめにすべてのイントラネットサイトを含めてそれを実装した組織の人々は、エンタープライズモードの実装方法を完全に誤解しています。


はい、彼らは間違いなくそうすべきですが、私は残念ながらこの件について発言権はありませんが、彼らとともに提起されました。
2015

1

質問は少し古いですが、非常によく似た問題を解決しました。私が担当しているサイトを含め、ここにはいくつかのイントラネットサイトがあり、その他のサイトには互換モードが必要です。そのため、サイトルールは既定でIEをイントラネットサイトの互換モードに設定します。私は自分のものをアップグレードしていますが、もう必要ありません。実際、使用しようとしている機能の一部は、互換モードでは正しく表示されません。私はあなたのようにメタIEエッジタグを使用しています。

IEは、完全修飾アドレスのないWebサイトがイントラネットであると想定し、それに応じて動作します。そのことを念頭に置いて、完全修飾アドレスのみをリッスンするようにIISのバインディングを変更し、非修飾アドレスをリッスンするダミーWebサイトをセットアップしました。2つ目は、すべてのトラフィックを完全修飾アドレスにリダイレクトし、IEにそれを外部サイトであると信じ込ませます。サイトは、[イントラネットサイトの互換モード]チェックボックスがオンになっているかどうかにかかわらず、正しくレンダリングされます。



私は以前にその質問を見ましたが、私はHTTPヘッダー行をMETA行と間違えたと思い、すでに試したと思いました。私がそれを矯正したら、それはうまくいきました。もう一度教えてくれてありがとう。
マイクアンダーソン

同じ互換性EDGE設定をWeb構成に適用しようとしましたが、うまくいきませんでした。これが機能するための唯一の方法は、特定のWebサイトをホワイトリストに追加して、新しいWebサイトから無視されるようにすることです。 IE11エンタープライズモード。互換モードとは異なるもののようです。ループを毎回実行するためにジャンプする必要があるため、これは決して良い解決策ではありません。
高価な2015

あなたが私と同じ道を進んだようですね。やらなければならないことが2つあります。1は、ページのMETAタグのEDGE設定でした。あなたはこれをweb.configで行うことができるかもしれませんが(そうでないか、私にはわかりません)、私はサイトマスターページでそれを行いました。もう1つは、カスタムHTTPヘッダーをweb.configに追加することでした。
マイクアンダーソン

1

これは、いくつかの良い情報を持つ古い問題です。しかし、私が見つけたのは、FQDNを使用すると、IE 9〜11の互換モードがオフになるということです。私はcompatの問題があり
ます。http:// lrmstst01:8080 / JavaWeb / login.do
が、問題が離れて行くと
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB:.INTはの一部であります私たちの内部ドメイン


それらのリンクは無効です。これらは、コンピューター名のみのURLとFQDNのURLの例として使用されています。
ディーンP

2
プロのヒント:Example.comは、まさにこの目的のために存在します
基本的な

これはまだ問題であり、このコメントはソリューションに何も追加しません。
ダイアナ

0

信頼済みサイトリストまたはローカル設定に追加して、信頼済みサイトゾーンに移動します。これにより、イントラネットゾーンの外に移動し、Compatではレンダリングされません。見る。


Psこれが機能するのはわかっています。これは、X-UAタグで記述されていない新しいブラウザーベースの製品に対して、私たちが会社で行っていることです。
グレッグC.

これが会社全体の設定である可能性が高いことを考えると、あなたの答えをすべてのユーザーのマシンに適用する必要があり、これは理想的ではありません。
MattD、2015

0

以下のプロパティをIISサイトのweb.configファイルに追加します。これは、IE11のイントラネットで機能しました。

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

チケットの更新を確認してください。エンタープライズモードと互換モードは2つの異なるものです
高価な

0

この問題は、イントラネットをホストしているサーバーのFQDNにユーザーをリダイレクトすることで解決しました。

IEはおそらく「イントラネット」サイトを検出するために世界で最悪のアルゴリズムを使用しています...確かに、server.domain.tldを指定すると問題が解決します。

はい、あなたはそれを正しく読みました。IEはプライベートIPアドレスではなくイントラネットサイトを検出します。TCP/ IPを聞いたことのある開発者は、URLの「ホスト」部分によって行うのと同じように、ドメイン部分がない場合、内部にいる。

IE開発者が最も基本的なTCP / IPの概念を理解していないことを知って怖い。

これは大企業の顧客が行ったものであり、GPOを変更するよう依頼することは、アルプスを東に4メートル移動しようとするようなもので、実際には起こりません。


IEはおそらくDNSルックアップを行い、そこからIPを知っています。MSなので、おそらくADを実行できますが、DNSの方が理にかなっています。
smoore4

@SQLDBA否定、たとえば10.0.0.1などのIPを指定した場合、ホストは「イントラネット」サイトとして検出されません... DNSとは関係ありませんが、ADとはどういう意味ですか?ADに接続し、そこでホストを検索するということですか?意味がありません、なぜそれをするのですか?そして、彼らは理由のためにマイクロソフトです™。
thecarpy

0

それだけの価値があるので、IE11でも問題が発生しました。

  • エンタープライズモードではありませんでした。
  • 「互換表示でイントラネットサイトを表示する」がチェックされました。
  • 私はすべて持っていた<!DOCTYPE html>し、IE=Edge質問に記載された設定を
  • メタヘッダーは確かにある第一要素だった<head>要素

しばらくすると、次のことがわかりました。

  • サーバーに送信されたユーザーエージェントヘッダーはIE7 でしたが ...
  • JavaScript値はIE11でした!

HTTPヘッダー

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

JavaScript

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

そのため、クライアント側でチェックを行うことになりました。

ところで、一方で、ユーザーエージェントをチェックすることは推奨されなくなりました。https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agentを参照してください (ただし、適切なケースがある場合があります)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.