Why does Microsoft Edge open some local websites, but not others, where the domain name is routed to 127.0.0.1 in hosts file

Like a lot of programmers, I test sites locally.
I use the hosts file to map domain names to my local ip (127.0.0.1).

I use qualified domain names, usually with a "d" subdomain (for "development").

For example:

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

In Microsoft edge, most of the web sites work. However, a couple of them do not. There is nothing special or weird about the domain names that won't work. Just a simple d.someletters.com.

They work fine in Chrome, IE, and Firefox.

In Edge, I get the error message: "Hmm, we can't reach this page."

At first I thought it wasn't resolving the IP. However, I realized when I made a typo on another non-related url, that requests which are not routed by the hosts file are sent to my ISP to be resolved. If my ISP can't resolve it, they send back this special search results page with suggestions of what you might be trying to find. Well, when I go to my local domain, I do not get this page from my ISP. I get the error mentioned above straight from edge.

So, it seems to me that Edge is resolving the domain correctly, otherwise it would have been sent off to my ISP's DNS.

So, I would think then that maybe Edge just can't connect to the local machine. But like I said, several of these local domains are working fine. Also, using 127.0.0.1 directly in Edge also works. It's just these couple of domain names giving me a problem. And only in Edge (all other browsers work) Any ideas?

The web server is Apache2 for Windows (xampp) if that matters.

Also, if I open the debug window in Edge and monitor the network, I do not see any requests going out at all.

EDIT: I am no longer using the hosts file. I have dnsmasq running on one of my Linux boxes and I am using it for DNS instead of hosts. Also no longer using loopback (obviously since DNS is on another box now), I am using an internal private ip address (192.168...). Same issue.


  • Your network can block loopback as a security measure in Windows 10.

  • Open a command prompt as administrator, and run this to exempt Edge from a loopback:

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

(Microsoft.MicrosoftEdge_8wekyb3d8bbwe is the identifier for the Edge app)

There's a blog post here giving more detail: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/


I (thought I) solved it!

Things that did not work:

  • Making changes to IE compatibility settings or Windows compatibility lists
  • Using fully qualified domain names
  • Using an IP address other than loopback
  • using http vs https
  • remove all javascript and cross-site scripts/resources from the web page
  • checking / unchecking the option in about:flags for allowing localhost loopback or using compatibility settings
  • removing / adding / editing the entries in the TabProcConfig of the Windows Registry
  • deleting browsing history, cache, cookies

The Solution: in a complete counter-intuitive twist:

Remove the domain names from your trusted sites list!

  1. Open the Internet Options dialog (just ask Cortana or use windowskey+s)
  2. Go to the Security tab
  3. Click on the Trusted Sites zone
  4. Click the Sites button
  5. Remove the troubled domain names from the trusted sites list
  6. Click Apply and then close the dialog
  7. Open Edge (or restart it if it is already running)
  8. Viola

I should note that I, using common-sense, figured that it wasn't just the fact that the site was merely present in the "Trusted Sites" zone that caused the issue. I figured it was some setting on that zone. So, before I deleted the domain names from the "sites" list, I made all of the settings match my Internet Zone settings exactly (Medium high security, enable protected mode, do not require server verification for all sites), and I also tried every other combination I could find. There was no combination of zone security settings that worked. The only solution was to simply remove the domains from the Trusted Sites list completely. Funny thing is that it works in IE regardless, even though this is the internet settings dialog for IE. This only seems to affect Edge.

Windows 10 Internet Options

Remove Trusted Sites from the Trusted Zone

EDIT: Two weeks later I change my configuration to, instead of the hosts file, use dnsmasq on a local Linux machine and using it for DNS. I'm not sure if it happened right away but at some point Edge stopped working again! I already had the "allow loopback" checkbox checked in about:flags, so I didn't expect the CheckNetIsolation fix to work. But, it did. Edge version is 20.10240.16384.0. I used the fix from Can't open localhost in Microsoft Edge (Project Spartan) in Windows 10 preview

EDIT #2 A couple of months later and Edge is having this problem again. I tried both previous solutions (and others) and neither of them work for me anymore. I'm leaving this answer because I am assuming I experienced two separate problems.


Edge doesn't support VPN IP addresses so any workaround needs to employ some sort of proxy. Here are some solutions that I found work:

  1. Install and run fiddler. Fiddler will basically intercept the request from the browser then forward it to the destination. This is the easiest workaround.

  2. Configure a proxy via the built-in Windows tool: netsh. The basic steps involve assigning your development domain to an available local private IP address in the 127.0.0.0/8 range, then mapping this IP to the webserver's IP on the VPN. See step by step instructions here

  3. Use the port forwarding feature of ssh to configure a proxy. Assuming that port 80 is available on localhost, add 127.0.0.1 d.somewebsite.com to your host file, then run the following ssh command: ssh -L localhost:80:localhost:80 user@devwebserver, where devwebserver is the hostname of your development webserver (say in the VM or vagrant instance, or across the VPN). This option assumes you have ssh access to the dev server.


Your "remove from trusted sites" solution didn't work for me because my local sites were not on my trusted sites.

But you got me looking the Internet Options and I managed to get IIS working for local sites for me on Windows 10. This is what I did:

  1. Open Internet Options and select "Local intranet"

enter image description here

  1. Click on "Sites"

enter image description here

  1. Click on "Automatically detect intranet network"

enter image description here

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

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.