Internet Explorer 11이 작동하지 않는 메타 태그를 통해 "호환성보기에서 인트라넷 사이트 표시"를 비활성화합니다.


100

doctypeInternet Explorer가 이전 브라우저 버전을 에뮬레이트하지 않도록 강제하기 위해 아래 html5 및 Edge 호환성 메타 태그를 사용하고 있었기 때문에 6 개월 이상 인트라넷 웹 사이트에서 작업 해 왔습니다.

<!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에서 작동했기 때문 입니다.

인트라넷 사이트 호환성보기 설정

한 달 전에 Internet Explorer 11로 업그레이드했지만 사이트는 여전히 예상대로 작동했습니다.

오늘 이것은 예상대로 작동을 멈췄습니다. 확실히 말할 수는 없지만 IE11에서는 호환성보기를 강제하는 정책이 활성화되지 않았고 지금은 ...라고 생각합니다.이 기능이 활성화되었으므로 호환성 메타 태그는 더 이상 없습니다. 이 사이트는 IE8을 에뮬레이트하는 엔터프라이즈 모드에서 실행되고 있습니다.

누구든지이 문제를 해결하고 호환성 "엔터프라이즈 모드"가 적용될 때 인트라넷 사이트에서 IE11을 강제로 사용하는 방법을 알고 있습니까? 브라우저 설정을 통해 비활성화 할 수 없습니까?

편집하다

이 답변 https://stackoverflow.com/a/18257208/98706에 설명 된대로 web.config에 사용자 지정 헤더를 추가하려고했습니다.

그리고 이것은 나를 위해 작동하지 않았습니다. 개발자 툴바 콘솔에 여전히 아래 메시지가 나타납니다.

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 을 참조하십시오. 하지만 제 경우에는 끌 수있는 것만 큼 간단하지 않습니다. 특정 인트라넷 사이트에 대해 재정의하고 싶었습니다. 메타 태그를 사용했지만 작동하지 않았습니다. 사이트가 이제 화이트리스트에 있기 때문에 다시 시도하지 않았습니다.
Pricey

답변:


93

다음 사항을 확인하십시오.

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

<meta>페이지 의 첫 번째 태그입니다. 그렇지 않으면 IE가이를 존중하지 않을 수 있습니다.

또는 IE 가이 웹 사이트에 대해 엔터프라이즈 모드 를 사용하고 있다는 것이 문제 일 수 있습니다 .

  • 귀하의 질문에 콘솔에 다음이 표시되었다고 언급되었습니다. HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • 그렇다면 엔터프라이즈 모드 (또는 이와 유사 ) 를 비활성화 하거나 IE의 도구 메뉴에서 해당 웹 사이트에 대해 비활성화 해야 할 수 있습니다 .
  • 그러나 엔터프라이즈 모드 이론적으로 X-UA-Compatible 태그로 재정의 해야 하지만 IE에는 버그가있을 수 있습니다.

예, 그 이후로 이미이 작업을 수행했지만 안타깝게도 작동하지 않았습니다. (
Pricey

해당 웹 사이트에 대해 엔터프라이즈 모드가 켜져있을 수 있습니다 (귀하의 질문에 따라) ... 내 답변을 업데이트했습니다. 도움이되는지 알려주세요
sparrowt

2
"엔터프라이즈 모드"와 "호환성보기"는 비슷하지만 다릅니다. "호환성보기에서 인트라넷 사이트 표시"가 선택되어 있어도 X-UA 호환 태그가이를 재정의해야합니다. 그러나 엔터프라이즈 모드가이를 무시할 수 있습니다. 사이트에있을 때 엔터프라이즈 모드 아이콘 ( media.askvg.com/articles/images5/… )이 표시됩니까?
sparrowt

1
또한 F12를 누르고 에뮬레이션 탭을 보면 무엇을 의미합니까? 문서 모드를 사용하는 이유를 알려줍니다. 호환성보기가 아닌 엔터프라이즈 모드를 사용하고 있다고 생각합니다.
sparrowt

19
이것은 너무 귀찮아서 전 세계의 웹 개발자 수십만 시간을 낭비하고 있습니다.
Sam Watkins 2015

19

이 문제는 일반적으로 다음 중 하나에있는 웹 사이트 / 인트라넷 URL로 인해 발생합니다.

  • 호환 모드 목록
  • Internet Explorer 인트라넷 영역
    ( 호환성보기에서 인트라넷 사이트 표시 설정 사용)
  • 엔터프라이즈 모드 목록

회사 네트워크에서 이러한 호환성보기 설정은 종종 그룹 정책을 통해 중앙에서 제어 됩니다. 귀하의 경우 엔터프라이즈 모드 가 범인으로 보입니다.

IE 11 엔터프라이즈 모드

불행히도 META 설정 X-UA-Compatible 은 이것을 무시하지 않습니다 .

최종 사용자 용

때때로 최종 사용자가이 메소드를 오버라이드 (override) 할 수있는 유일한 방법은 F12 키를 눌러로하고 변경 문서 모드 세 이하 에뮬레이션 탭. 그러나이 설정은 영구적이지 않으며 개발자 도구를 닫으면 되돌릴 수 있습니다.

인트라넷 영역에서 사이트를 제외 할 수도 있습니다. 그러나 인트라넷 영역에 속하는 도메인 목록도 일반적으로 그룹 정책에 의해 제어되므로이 작업의 가능성은 적습니다.

인트라넷 영역에 속하는 도메인 목록을 보려면 다음으로 이동하십시오.

도구-> 인터넷 옵션-> 보안-> 사이트-> 고급

목록에 하위 도메인이 포함되어 있고 회색으로 표시된 경우 네트워크 관리자가 허용 할 때까지 호환성보기를 재정의 할 수 없습니다.

그룹 정책에서 호환성보기 설정 변경을 허용하려면 네트워크 관리자에게 문의해야합니다.

네트워크 관리자 용

개발자 도구가 열린 상태 (F12)로 웹 사이트를로드하면 IE가 이전 모드로 전환하는 이유가 자주보고됩니다.

위에서 언급 한 세 가지 설정은 모두 일반적으로 그룹 정책을 통해 제어되지만 때로는 사용자 컴퓨터에서 재정의 될 수 있습니다.

경우 엔터프라이즈 모드는 문제가 (이 나타납니다 원래 포스터의 경우 가능하도록)이며, 다음과 같은 두 가지 기사가 도움이 될 수 있습니다 :


최근 연구에서 발견 한 몇 가지 세부 사항으로 훌륭한 답변을 확장했습니다. 괜찮기를 바랍니다.
Simon East

8

ASP.NET MVC 프로젝트를 빌드하는 경우 다음을 추가해야합니다.

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

레이아웃 (템플릿) 페이지에 태그를 추가합니다. 나는 단지 2 시간 동안 디버깅과 조정을했는데, 그 메타 태그 만 자식 페이지에 추가했다는 것을 깨달았습니다. 레이아웃 페이지에 추가하자마자 브라우저가 EDGE 모드로 완벽하게로드되었습니다.


내 문제는 브라우저가 IE8을 에뮬레이트하도록하는 IE11의 새로운 엔터프라이즈 모드와 관련이 있습니다. 이 메타 태그를 재정의하는 데 사용되는 호환성 모드와는 다릅니다. 나는 이것을 올바르게 사용하고 있었다.
Pricey

내 의견은 ASP.NET MVC에서 사이트를 구축하는 동일한 증상을 가진 다른 사람들을 돕기위한 것입니다. 구체적으로 말씀 드리지 않았습니다.
Jason Marsell

메타 태그는 ASP.NET 특정 아니라, 너무 BTW 비 .NET / MVC 사이트에 대한 (호환성 모드 문제가 아닌 엔터프라이즈 모드 문제에 대한) 작동합니다
댄 해리스

4

표시된 답변이 정답입니다. 그러나 Pricey, AD 및 데스크톱 관리자 그룹과 함께 후속 조치를 취해야합니다. IE11 엔터프라이즈 모드 사이트 목록을 오용하고 있습니다. Microsoft는 조직 내의 모든 인트라넷 사이트에 사용하도록 의도하지 않았습니다. 이는 전 세계 기업 웹 사이트 발전의 골칫거리 인 기존의 "호환성 모드로 모든 인트라넷 사이트 렌더링"설정을 전파하는 것입니다.

이는 렌더링 요구 사항이 지정된 엔터프라이즈 모드 목록에 실제로 레거시 브라우저 모드가 필요한 소수의 사이트와 함께 "블랙리스트"로 구현하기위한 것입니다. 그러면 조직의 다른 모든 사이트에서 Edge를 사용할 수 있습니다. 시작하기 위해 포함 된 모든 인트라넷 사이트와 함께이를 구현 한 조직의 사람들은 엔터프라이즈 모드가 구현되는 방식을 완전히 오해했습니다.


그렇습니다. 그들은 분명히 그렇게해야합니다.하지만 불행히도 그 문제에 대해 아무런 발언권이 없지만 그들과 함께 제기되었습니다.
Pricey

1

질문은 조금 오래되었지만 매우 유사한 문제를 해결했습니다. 여기에는 내가 담당하는 사이트를 포함하여 여러 인트라넷 사이트가 있으며 다른 사이트는 호환 모드가 필요하거나 중단됩니다. 따라서 사이트 규칙은 IE를 인트라넷 사이트의 호환성 모드로 기본 설정합니다. 내 물건을 업그레이드하고 있으며 더 이상 필요하지 않습니다. 사실, 제가 사용하려는 기능 중 일부는 호환 모드에서 제대로 보이지 않습니다. 나는 당신처럼 메타 IE-Edge 태그를 사용하고 있습니다.

IE는 정규화 된 주소가없는 웹 사이트가 인트라넷이라고 가정하고 그에 따라 작동합니다. 이를 염두에두고 IIS의 바인딩을 변경하여 정규화 된 주소 만 수신 한 다음 정규화되지 않은 주소를 수신하는 더미 웹 사이트를 설정했습니다. 두 번째는 모든 트래픽을 정규화 된 주소로 리디렉션하여 IE가 외부 사이트라고 믿게 만듭니다. 인트라넷 사이트의 호환성 모드 확인란을 선택하거나 선택하지 않고 사이트가 올바르게 렌더링됩니다.


참조 : stackoverflow.com/questions/2518256/… web.config 액세스 권한이있는 경우.
fontophilic

이전에 그 질문을 보았지만 HTTP 헤더 행을 META 행으로 착각하고 이미 시도했다고 생각했습니다. 내가 똑바로 펴면 잘 작동했습니다. 다시 지적 해 주셔서 감사합니다.
Mike Anderson

나는 웹 구성에 동일한 호환성 EDGE 설정을 적용하려고 시도했지만 작동하지 않았습니다.이 작업을 수행하는 유일한 방법은 특정 웹 사이트를 화이트리스트에 추가하여 새 웹 사이트에서 무시되도록 요청하는 것입니다. IE11 엔터프라이즈 모드는 호환 모드와 다른 것으로 보입니다. 매번 수행하기 위해 점프해야하는 루프로 인해 이것은 결코 나에게 좋은 솔루션이 아닙니다.
비싸지

당신이 저와 같은 길로 내려간 것 같네요. 내가해야 할 일이 두 가지 있습니다. 1은 페이지의 META 태그에있는 EDGE 설정입니다. web.config에서이 작업을 수행 할 수 있을지 모르지만 사이트 마스터 페이지에서 수행했습니다. 다른 하나는 web.config에 사용자 지정 HTTP 헤더를 추가하는 것입니다.
Mike Anderson

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의 예로 사용됩니다.
Dean P

2
프로 팁 : Example.com은이 목적을 위해 존재
기본

이것은 여전히 ​​문제이며이 주석은 솔루션에 아무것도 추가하지 않습니다.
Diana

0

신뢰할 수있는 사이트 목록이나 로컬 설정에 추가하여 신뢰할 수있는 사이트 영역으로 이동합니다. 그러면 인트라넷 영역 밖으로 이동하고 Compat에서 렌더링되지 않습니다. 전망.


추신 : X-UA 태그로 작성되지 않은 최신 브라우저 기반 제품에 대해 회사에서 원하는 방식으로 렌더링을 적용하기 때문에 이것이 작동한다는 것을 알고 있습니다.
Greg C.

이것이 회사 전체의 설정이 모든 사용자의 컴퓨터에 적용되어야 할 가능성이 높기 때문에 이상적이지 않습니다.
MattD

0

IIS 사이트의 web.config 파일에 아래 속성을 추가합니다. 이것은 IE11의 인트라넷에서 저에게 효과적이었습니다.

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

티켓에 대한 나의 업데이트, 엔터프라이즈 모드 및 호환성 모드는 두 가지 다른 점을 참조하십시오
Pricey

0

사용자를 인트라넷을 호스팅하는 서버의 FQDN으로 리디렉션하여이 문제를 해결했습니다.

IE는 아마도 "인트라넷"사이트를 탐지하는 데 세계 최악의 알고리즘을 사용하고있을 것입니다. 실제로 server.domain.tld를 지정하면 문제가 해결됩니다.

예, 올바르게 읽었습니다. IE는 TCP / IP에 대해 들어 본 개발자처럼 개인 IP 주소가 아닌 인트라넷 사이트를 감지합니다. URL의 "호스트"부분에 도메인 부분이 없으면 반드시 검색해야합니다. 내부적이어야합니다.

IE 개발자가 가장 기본적인 TCP / IP 개념을 이해하지 못하는 것을 아는 것이 무섭습니다.

이것은 BIG 기업 고객의 것이 었습니다. GPO를 변경하도록하는 것은 알프스를 동쪽으로 4 미터 이동하려고 시도하는 것과 같습니다.


IE는 아마도 DNS 조회를 수행하고 그로부터 IP를 알고 있습니다. MS이기 때문에 아마도 AD를 할 수 있지만 DNS가 더 의미가 있습니다.
smoore4 2016

@SQLDBA 부정적입니다. IP를 지정하면 (예 : 10.0.0.1) 호스트가 "인트라넷"사이트로 감지되지 않습니다. DNS와 관련이 없습니다. AD와 관련하여 무엇을 의미합니까? AD에 연결하고 거기에서 호스트를 찾는다는 의미입니까? 말도 안 돼, 왜 그렇게할까요? 다시 말하지만, 이유는 Microsoft입니다.
thecarpy

0

그만한 가치에 대해서는 IE11에서도 문제가 발생했습니다.

  • 엔터프라이즈 모드 가 아니 었 습니다.
  • "호환성보기에서 인트라넷 사이트 표시"를 선택했습니다.
  • 질문에 언급 된 모든 <!DOCTYPE html>IE=Edge설정이 있습니다.
  • 메타 헤더는 실제로 1 번째 요소이었다 <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) 그러나

자바 스크립트 :

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

그래서 결국 클라이언트 측에서 확인했습니다.

한편 BTW는 더 이상 사용자 에이전트를 확인하지 않는 것이 좋습니다. 참조 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.