developer tip

Microsoft Edge가 일부 로컬 웹 사이트를 열지 만 다른 웹 사이트는 열지 않는 이유는 도메인 이름이 호스트 파일에서 127.0.0.1로 라우팅되는 이유

optionbox 2020. 11. 17. 08:00
반응형

Microsoft Edge가 일부 로컬 웹 사이트를 열지 만 다른 웹 사이트는 열지 않는 이유는 도메인 이름이 호스트 파일에서 127.0.0.1로 라우팅되는 이유


많은 프로그래머와 마찬가지로 저는 사이트를 로컬에서 테스트합니다.
호스트 파일을 사용하여 도메인 이름을 로컬 IP (127.0.0.1)에 매핑합니다.

일반적으로 "d"하위 도메인 ( "development"용)과 함께 정규화 된 도메인 이름을 사용합니다.

예를 들면 :

d.somewebsite.com 
d.anotherwebsite.com 
and so on...

Microsoft Edge에서는 대부분의 웹 사이트가 작동합니다. 그러나 그들 중 일부는 그렇지 않습니다. 작동하지 않는 도메인 이름에 대해 특별하거나 이상한 것은 없습니다. 그냥 간단 d.someletters.com합니다.

Chrome, IE 및 Firefox에서 잘 작동합니다.

Edge에서 "흠,이 페이지에 연결할 수 없습니다."라는 오류 메시지가 나타납니다.

처음에는 IP가 해결되지 않는다고 생각했습니다. 그러나 관련이없는 다른 URL에 오타를 입력했을 때 호스트 파일에 의해 라우팅되지 않은 요청이 내 ISP로 보내져 해결된다는 것을 깨달았습니다. 내 ISP가 문제를 해결할 수없는 경우 사용자가 찾으려고 할 수있는 제안과 함께이 특별 검색 결과 페이지를 다시 보냅니다. 내 로컬 도메인으로 이동할 때 ISP에서이 페이지를받지 못합니다. 위에서 언급 한 오류가 가장자리에서 똑바로 나타납니다.

따라서 Edge가 도메인을 올바르게 확인하는 것 같습니다. 그렇지 않으면 ISP의 DNS로 전송되었을 것입니다.

따라서 Edge가 로컬 컴퓨터에 연결할 수 없을 수도 있다고 생각합니다. 그러나 내가 말했듯이 이러한 로컬 도메인 중 일부는 잘 작동합니다. 또한 Edge에서 직접 127.0.0.1을 사용하는 것도 작동합니다. 이 두 개의 도메인 이름이 문제를 일으키는 것입니다. 그리고 Edge에서만 (다른 모든 브라우저가 작동합니다) 아이디어가 있습니까?

중요한 경우 웹 서버는 Windows 용 Apache2 (xampp)입니다.

또한 Edge에서 디버그 창을 열고 네트워크를 모니터링하면 요청이 전혀 표시되지 않습니다.

편집 : 더 이상 호스트 파일을 사용하지 않습니다. Linux 상자 중 하나에서 dnsmasq를 실행하고 있으며 호스트 대신 DNS에 사용하고 있습니다. 또한 더 이상 루프백을 사용하지 않으며 (당연히 DNS가 이제 다른 상자에 있기 때문에) 내부 개인 IP 주소 (192.168 ...)를 사용하고 있습니다. 같은 문제.


  • 네트워크는 Windows 10의 보안 조치로 루프백을 차단할 수 있습니다.

  • 관리자 권한으로 명령 프롬프트를 열고 다음을 실행하여 Edge를 루프백에서 제외합니다.

    CheckNetIsolation LoopbackExempt -a -n="Microsoft.MicrosoftEdge_8wekyb3d8bbwe"
    

( Microsoft.MicrosoftEdge_8wekyb3d8bbwe는 Edge 앱의 식별자입니다.)

여기에 자세한 내용을 제공하는 블로그 게시물이 있습니다. https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/


나는 그것을 해결했다고 생각했다!

작동하지 않은 것 :

  • IE 호환성 설정 또는 Windows 호환성 목록 변경
  • 정규화 된 도메인 이름 사용
  • 루프백 이외의 IP 주소 사용
  • http 대 https 사용
  • 웹 페이지에서 모든 자바 스크립트 및 교차 사이트 스크립트 / 리소스 제거
  • 로컬 호스트 루프백을 허용하거나 호환성 설정을 사용하기 위해 about : flags의 옵션 선택 / 선택 취소
  • Windows 레지스트리 TabProcConfig 에서 항목 제거 / 추가 / 편집
  • 검색 기록, 캐시, 쿠키 삭제

해결책 : 완전히 반 직관적 인 방식으로 :

신뢰할 수있는 사이트 목록 에서 도메인 이름을 제거하십시오 !

  1. 인터넷 옵션 대화 상자를 엽니 다 (Cortana에 문의하거나 windowskey + s 사용).
  2. 보안 탭으로 이동
  3. 신뢰할 수있는 사이트 영역을 클릭 합니다.
  4. 사이트 버튼을 클릭하십시오.
  5. 신뢰할 수있는 사이트 목록에서 문제가있는 도메인 이름 제거
  6. 적용을 클릭 한 다음 대화 상자를 닫습니다.
  7. Edge 열기 (또는 이미 실행중인 경우 다시 시작)
  8. 비올라

나는 상식을 사용하여 사이트가 단순히 "신뢰할 수있는 사이트"영역에 존재한다는 사실 만이 문제를 일으킨 것이 아니라는 것을 알았습니다. 나는 그것이 그 지역의 일부 설정이라고 생각했습니다. 따라서 "사이트"목록에서 도메인 이름을 삭제하기 전에 모든 설정이 내 인터넷 영역 설정과 정확히 일치하도록 설정하고 (중간 높은 보안, 보호 모드 활성화, 모든 사이트에 대해 서버 확인 필요 없음) 시도했습니다. 내가 찾을 수있는 다른 모든 조합. 작동하는 영역 보안 설정 조합이 없습니다. 유일한 해결책은 신뢰할 수있는 사이트 목록에서 도메인을 완전히 제거하는 것입니다. 재미있는 것은 이것이 IE의 인터넷 설정 대화 상자 임에도 불구하고 IE에서 작동한다는 것입니다. 이것은 Edge에만 영향을 미치는 것 같습니다.

Windows 10 인터넷 옵션

신뢰할 수있는 영역에서 신뢰할 수있는 사이트 제거

편집 : 2 주 후 호스트 파일 대신 로컬 Linux 시스템에서 dnsmasq를 사용하고 DNS에 사용하도록 구성을 변경합니다. 즉시 발생했는지 확실하지 않지만 어느 시점에서 Edge가 다시 작동을 멈췄습니다! about : flags에서 "루프백 허용"확인란을 이미 선택 했으므로 CheckNetIsolation 수정이 작동 할 것이라고 예상하지 못했습니다. 하지만 그랬습니다. Edge 버전은 20.10240.16384.0입니다. Windows 10 미리보기에서 Microsoft Edge (Project Spartan)에서 로컬 호스트를 열 수 없음 의 수정 사항을 사용했습니다.

편집 # 2 몇 달 후 Edge는이 문제가 다시 발생합니다. 나는 이전 솔루션과 다른 솔루션을 모두 시도했지만 더 이상 나를 위해 작동하지 않습니다. 나는 두 가지 별도의 문제를 경험했다고 가정하기 때문에이 답변을 남겼습니다.


Edge는 VPN IP 주소를 지원하지 않으므로 해결 방법은 일종의 프록시를 사용해야합니다. 내가 찾은 몇 가지 해결책은 다음과 같습니다.

  1. 를 설치하고 실행 fiddler합니다. Fiddler는 기본적으로 브라우저의 요청을 가로 챈 다음 대상으로 전달합니다. 이것이 가장 쉬운 해결 방법입니다.

  2. 기본 제공 Windows 도구를 통해 프록시 구성 : netsh. 기본 단계는 개발 도메인을 127.0.0.0/8범위 에서 사용 가능한 로컬 사설 IP 주소에 할당 한 다음이 IP를 VPN의 웹 서버 IP에 매핑하는 것입니다. 여기에서 단계별 지침을 참조 하십시오.

  3. ssh의 포트 전달 기능을 사용하여 프록시를 구성하십시오. localhost에서 포트 80을 사용할 수 있다고 가정하고 127.0.0.1 d.somewebsite.com호스트 파일에 추가 한 후 다음 ssh 명령을 실행합니다. ssh -L localhost:80:localhost:80 user@devwebserver, 여기서는 devwebserver개발 웹 서버의 호스트 이름입니다 (예 : VM 또는 방랑 인스턴스 또는 VPN 전체). 이 옵션은 개발자 서버에 ssh 액세스 권한이 있다고 가정합니다.


내 로컬 사이트가 내 신뢰할 수있는 사이트에 없기 때문에 "신뢰할 수있는 사이트에서 제거"솔루션이 작동하지 않았습니다.

하지만 인터넷 옵션을 찾게되었고 Windows 10에서 로컬 사이트를 위해 IIS가 작동하도록 관리했습니다. 이것이 제가 한 일입니다.

  1. 인터넷 옵션을 열고 "로컬 인트라넷"을 선택합니다.

여기에 이미지 설명 입력

  1. "사이트"를 클릭하십시오

여기에 이미지 설명 입력

  1. "인트라넷 네트워크 자동 감지"를 클릭하십시오.

여기에 이미지 설명 입력

  1. Click OK. Try your local machine site in Microsoft Edge and it should now work.

When this happens to me I can find a domain entry in the registry key below that matches the domain. When I remove it things work, for a while... I don't know why but Edge will add it back eventually.

Computer\HKEY_USERS\S-1-5-21-964789662-521690395-1734141374-1111\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\TabProcConfig


May not apply to your situation, but nonetheless. My setup was as follows. A public space address (internet) page was attempting to load a page with a private space address (intranet) in an iframe and Edge would refuse to load the intranet page with the same "Hmm, we can't reach this page" message, and with "SEC7117 Error" in the debug console. Turns out Edge doesn't like mixing internet/intranet zones (see Understanding Enhanced Protected Mode blog post for reasons why). Edge runs tabs in separate AppContainers, and AppContainer network restrictions are sensitive to your network configuration.

My solution was to take the server which hosted the intranet page in question out of the domain network by assigning a second private space IP to it, and create a second DNS entry to that IP. The server ends up having 2 IPs: one on the domain network and an alternative one and 2 different DNS entries. Edge is then pointed to the alternative URL and it starts loading the intranet page just fine. It seems like as long as the IP masks of the PC and the page URL in question do not match, Edge will load the page.

The blog post I mentioned has info on Loopback-blocked for localhost and lack of privateNetworkClientServer capability in IE. As far as I can tell all that info applies to Edge.


None of the other solutions worked for me. It turns out that my issue relates to VPN. Microsoft Edge still doesn't support VPN IP addresses, while Internet Explorer 11 does. Impressive that this is still an issue as of May 2016.

Additional Details: https://social.technet.microsoft.com/Forums/en-US/b3a687ae-345d-4c3f-9070-184b33fb1fc6/microsoft-edge-cant-access-vpn-ip-address-but-ie-11-can?forum=win10itprogeneral

Currently Microsoft Edge seems to be not working well with VPN. And the mechanism to connect to Internet from Microsoft Edge is a little different from Internet Explorer 11 and the other desktop browsers, which I can't explain clearly as I don't know much about it.

So based on the current situation, please take use of Internet Explorer 11 instead.


In my case changing the network type from private to public did the trick. This is also reproducible and changing the network type reliable changes the state from "working" to getting: Http failure response for (unknown url): 0 Unknown Error


Noting from your edit that you are now accessing the site on 192.168.0.0/16 address, rather than on 127.0.0.1, I am guessing you are running into an issue with the way the Edge browser behaves differently depending on the interface used to access the site. Other browsers I tried don't behave this way.

In my environment, I had a Virtualbox host-only network setup and this had an NdisDeviceType of 1. Edge would only allow me to navigate to sites over this interface after I changed NdisDeviceType to 0. The registry key you need is:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\XXXX

Instead of XXXX, you need the correct key for your interface, which I determined from "route print" and subtracted 1. For me it was "0016".

The value to change is called *NdisDeviceType. (That's a literal asterisk.) I changed it from 0 to 1 and had to reboot for Windows to notice the change.

My answer was gleaned from a post by "Jani L" dated Oct 3, 2017. I also posted this solution in more detail to another stackoverflow question. Also see a Virtualbox ticket 15565.


저는 인터넷 옵션 (제어판), 보안, 로컬 인트라넷 을 차례로 선택한 다음 "인트라넷 네트워크 자동 감지"에 체크 표시를했습니다. 이것은 아래의 중첩 옵션을 회색으로 표시했고 Edge는 즉시 내 호스트 파일을 사용하기 시작했습니다.

참고 URL : https://stackoverflow.com/questions/32384571/why-does-microsoft-edge-open-some-local-websites-but-not-others-where-the-doma

반응형