Child pages
  • MS Internet Explorer 일 경우 호환성 보기 끄기 - apache httpd mod_header 와 mod_env 사용

최신 웹 기술을 적용해서 만든 페이지로 MS IE 로 연결할 때 호환성 보기가 켜져 있으면 예전 렌더링 엔진이 동작하므로 제대로 표시 안 될 수 있다.


HTML 마다 다음과 같은 메타 태그를 넣으면 예전 렌더링 엔진을 사용하지 않고 최신 렌더링 엔진을 사용하게 되지만 HTML 마다 설정해야 하고 IE 전용 태그이므로 HTML validator 에서는 경고를 출력할 수 있다고 한다.

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


아파치 웹서버의 mod_header 와 mod_env 를 사용하면 "X-UA-Compatible" 헤더를 전송하여 강제로 호환성 보기를 끌 수 있다.

RHEL 이나 CentOS 기반의 리눅스라면 mod_header 와 mod_env 는 기본적으로 로딩되므로 별도의 <IfModule> 구문은 사용하지 않아도 된다.


apache httpd

httpd.conf

<VirtualHost *:80>
	ServerName example.com
	DocumentRoot /var/www/html/
 
	BrowserMatch MSIE is-msie
    Header set X-UA-Compatible IE=edge env=is-msie
</VirtualHost>


nginx

nginx 는 BrowserMatch 가 없으므로 강제로 헤더를 전송하면 되며 IE가 아닌 chrome 등의 브라우저는 무시한다.

server {
    listen       80;
    server_name  example.com;


    add_header X-UA-Compatible "IE=edge";
}



테스트
curl -v --user-agent "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)" http://example.com


결과

< HTTP/1.0 200 OK
< Date: Mon, 06 Oct 2014 07:56:40 GMT
< Server: Apache
< Cache-Control: no-cache, no-store, must-revalidate
< Pragma: no-cache
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: DENY
< X-Content-Type-Options: nosniff
< X-Content-Security-Policy: default-src 'self'
< X-WebKit-CSP: default-src 'self'
< Set-Cookie: JSESSIONID=A36213FD1B6C560CE7BAEEA66D0FD444; Path=/; Secure; HttpOnly
< Content-Language: ko-KR
< X-UA-Compatible: IE=edge
< Connection: close
< Content-Type: text/html;charset=UTF-8


Ref