読者です 読者をやめる 読者になる 読者になる

ふろしき.js

Web + Mobile + UX + Performance Tech

IE11のユーザエージェント問題 - 運用者側でできる対策(Apache HTTP Server/IISの設定変更)

IE IE11 SI向け

運用しているWebサイト/システムがIE11からのアクセスへ対応できない場合、運用者側としてはHTTPヘッダを利用した対策を行うことができます。

対策可能な範囲としては、以下2つが挙げられます。

  1. アクセス元のWebブラウザの互換性モードを制御する
  2. アプリケーションへ透過的にIEであることを認識させる

前者はWebブラウザ上で動作が正常に行われなかった場合、後者はサーバ上のアプリケーションの動作が正常に行われなかった場合の対策です。どちらもミドルウェア製品のパラメータ設定の変更のみで対処が可能です。

当然ですが、これらの対処にはサーバの停止が必要になります。また、他の設定との競合などの問題により、動作が確実に保証されるものではないため、事前の動作検証が必要です。

1. アクセス元のWebブラウザの互換モードを制御する

サーバからIEの互換モードを制御して、IE10以下のWebブラウザの動作を再現させることができます。新規開発/制作では良い方法とは言えませんが、既存のWebサイト/システムを最小の変更のみで維持するには有効な手段です。

対策は、HTTPレスポンスヘッダへIEの互換モードを制御する、「X-UA-Compatible」というプロパティを追加することによって実現できます。どのWebサーバの製品を使うかによって、その制御方法は様々です。

ここでは、「Linuxベース(Apache HTTP Server)「と「Microsoftベース(IIS)」の2つのケースについて対策方法を解説します。

★ ApacheでHTTPレスポンスヘッダにX-UA-Compatibleを追加する

RHEL/CentOS/FedoraでApache HTTP Serverを利用している場合は、「/etc/httpd/httpd.conf」にて、一番最後に以下の内容を追記して下さい。

LoadModule headers_module modules/mod_headers.so
<IfModule headers_module>
   Header set X-UA-Compatible: IE=10
</IfModule>

Apacheに「mod_headers.so」がバンドルされていない場合はエラーになります。予め、インストールして下さい。

Apacheの場合は、「mod_rewrite」を用いたURLによる振り分けを行っているケースが多いでしょう。この場合、以下のルール変更のみで対応可能です。

# ✕ 従来の振り分け判定記述
RewriteCond %{HTTP_USER_AGENT} MSIE
# ◯ IE11対策された判定記述
RewriteCond %{HTTP_USER_AGENT} Trident

★ IISでHTTPレスポンスヘッダにX-UA-Compatibleを追加する

MicrosoftのWindows系OSで「インターネット インフォメーション サービス(IIS)」を利用している場合は、以下の手順になります。

「コンピュータの管理」→「インターネット インフォメーション サービス(IIS) マネージャー」
f:id:furoshiki0223:20131112210814p:plain

「HTTP応答ヘッダー」
f:id:furoshiki0223:20131112210923p:plain
表示内で右クリック、「追記」を左クリック
f:id:furoshiki0223:20131112211023p:plain
「名前(N):」へ「X-UA-Compatible」、「値(V):」へ「IE=10」
f:id:furoshiki0223:20131124004901p:plain

2. アプリケーションへIEであることを認識させる

ユーザエージェントが従来の方式でIEの判定が行えなくなった場合、サーバ上のプログラムが動作不良を起こしてしまうケースもあるでしょう。この場合、ユーザエージェントがサーバ上のプログラムへ渡される前に、従来の方式によって判定できるように偽装を行うことで対処できます。

Linux/Apacheの場合

Apache HTTP Serverには「mod_setenvif」と呼ばれるモジュールがあります。

元は第一次ブラウザ戦争時代に、NetScape用に作られたWebサイトをIEから入れないようにするために作られたものでしたが、今回はその逆で、Firefox(旧NetScape)のふりをしたIEを受け入れるために利用できます。時代の流れとは、恐ろしいものです。

http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html

(※ 本記事は現在「執筆中」のステータスです。)

IE11のユーザエージェント問題 - 対策方法の全て

広告を非表示にする