web-dev-qa-db-ja.com

Internet Explorer 11がメタタグを介して「互換ビューでイントラネットサイトを表示する」を無効にする

私は、6ヶ月以上イントラネットWebサイトで作業していました。以下のhtml5 doctypeおよびEdge互換メタタグを使用して、Internet Explorerに古いバージョンのブラウザをエミュレートさせないようにしました。

<!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で機能しました。

Intranet site compatibility view setting

1ヶ月以上前に私はInternet Explorer 11にアップグレードされ、そのサイトはまだ期待通りに機能していました。

今日、これは期待通りに動作しなくなりました、確かに言うことはできませんが、互換ビューを強制するポリシーはIE11では有効になっていなかったと思います...そしてこれが有効になったので互換メタタグはもうなくなりました期待どおりの動作をしていて、このサイトはIE8をエミュレートするEnterpriseモードで実行されています。

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

EDIT

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

これは私にはうまくいきませんでした。私はまだ開発者用ツールバーのコンソールに以下のメッセージを表示しています。

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

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

この記事: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode これについての説明はまだ終わっていませんコードでこのヘッダを設定しようとしましたが、私たちのユーザはブラウザの設定を変更することはできません。

UPDATE

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

95
Pricey

確認してください:

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

あなたのページの最初の<meta>タグで、そうでなければIEはそれを尊重しないかもしれません。

あるいは、問題はIEがこのWebサイトで Enterprise Mode を使用していることです。

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

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

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

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

IE 11 Enterprise Mode

残念ながら、METAのX-UA-Compatibleを設定してもこれを上書きすることはできません

エンドユーザー向け

エンドユーザーがこれを無効にする唯一の方法は、F12キーを押してエミュレーションタブの下のドキュメントモードを変更することです。ただし、この設定は恒久的なものではなく、Developer Toolsを閉じると元に戻ることがあります。

サイトをイントラネットゾーンから除外することもできます。しかし、イントラネットゾーンに属するドメインのリストは、通常、グループポリシーによっても制御されているため、このように機能する可能性はわずかです。

イントラネットゾーンに属するドメインの一覧を表示するには、次のURLにアクセスしてください。

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

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

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

ネットワーク管理者向け

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

上記の3つの設定はすべてグループポリシーで制御されるのが一般的ですが、ユーザーのコンピュータでは上書きされることがあります。

エンタープライズモードが問題の場合(元のポスターの場合と同様に)、次の2つの記事が役立つことがあります。

17
rustyx

ASP.NET MVCプロジェクトを構築している人のために、必ず次のものを追加してください。

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

レイアウト(テンプレート)ページにタグを付けます。私はたった2時間のデバッグと調整に費やしましたが、それは自分の子ページにそのメタタグを追加しただけだということを理解するためだけです。レイアウトページに追加するとすぐに、ブラウザは完全にEdgeモードでロードされました。

6
Jason Marsell

マークされた答えは正しいものです。しかし、Pricey、あなたはあなたのADとデスクトップ管理者グループでこれをフォローアップするべきです。彼らはIE11 Enterprise Modeサイトリストを悪用しています。マイクロソフトは、それが組織内のすべてのイントラネットサイトに使用されることをまったく意図していません。これは既存の「互換モードですべてのイントラネットサイトを表示する」設定を広めることになり、それは世界中の企業Webサイトの進歩の悩みの種です。

これは「ブラックリスト」として実装することを目的としており、実際には、表示要件を指定してエンタープライズモードリストに記載されているレガシブラウザモードを必要とするサイトがいくつかあります。組織内の他のすべてのサイトはEdgeを使用するために解放されます。はじめにすべてのイントラネットサイトで実装した組織内の人々は、エンタープライズモードの実装方法を完全に誤解しています。

3
ch1nmuzak

これは良い情報を持った古い問題です。しかし、私が見つけたのは、FQDNを使うとIE 9 - 11のCompatモードがオフになるということです。私はcompat問題を抱えています
http:// lrmstst01:8080/JavaWeb/login.do
しかし問題は解決します
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
注:.intは私達の内部ドメインの一部です

2
Dean P

問題は少し古いですが、私は非常によく似た問題を解決しました。私たちが担当しているものも含めて、ここにはいくつかのイントラネットサイトがありますが、他のものは互換モードを必要としたり、壊れたりします。そのため、イントラネットサイトでは、サイトルールはデフォルトでIEを互換モードに設定します。私は自分自身のものをアップグレードしていて、もうそれを必要としません。実際、私が使おうとしている機能のいくつかは、compatモードでは正しく見えません。私はあなたのようにメタIE-Edgeタグを使っています。

IEは、完全修飾アドレスのないWebサイトがイントラネットであると想定し、それに従って行動します。そのことを念頭に置いて、私はIISのバインディングを、完全修飾アドレスのみを聴取するように変更してから、修飾されていないアドレスを聴取するダミーWebサイトを設定しました。 2つ目はすべてのトラフィックを完全修飾アドレスにリダイレクトし、IEが外部サイトであると考えさせる。サイトは、[イントラネットサイトの互換モード]チェックボックスがオンまたはオフの状態で正しくレンダリングされます。

1
Mike Anderson

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

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

そうです、TCP/IPを聞いたことのある開発者がURLの "Host"部分を使って行うのと同様に、IEはプライベートIPアドレスではなくイントラネットサイトを検出します。ドメイン部分はなく、内部である必要があります。

IE devを知るのが怖いので、最も基本的なTCP/IPの概念を理解していません。

これはBIGエンタープライズの顧客であり、GPOを変更するように促すことは、アルプスを4メートル東に移動させようとしているのではなく、起こることではありません。

0
thecarpy

それが価値があるもののために、私はIE11でも同様に問題を抱えていました:

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

しばらくして、私はそれを見つけました:

  • サーバーに送信されたUser Agentヘッダーは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 を参照してください(ただし、良いケースがあるかもしれません)

0
Yann Vo

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

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

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

0
Greg C.