Perché Microsoft Edge apre alcuni siti Web locali, ma non altri, in cui il nome del dominio viene instradato a 127.0.0.1 nel file hosts

Come molti programmatori, eseguo il test dei siti localmente.
Io uso il file hosts per mappare i nomi di dominio sul mio ip locale (127.0.0.1).

Uso nomi di dominio qualificati, solitamente con un sottodominio “d” (per “sviluppo”).

Per esempio:

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

In Microsoft edge, la maggior parte dei siti web funziona. Tuttavia, un paio di loro no. Non c’è niente di speciale o strano nei nomi di dominio che non funzioneranno. Solo un semplice d.someletters.com .

Funzionano bene in Chrome, IE e Firefox.

In Edge, ricevo il messaggio di errore: “Hmm, non possiamo raggiungere questa pagina”.

All’inizio pensavo che non si stesse risolvendo l’IP. Tuttavia, mi sono reso conto che quando ho fatto un refuso su un altro url non correlato, le richieste che non sono indirizzate dal file hosts vengono inviate al mio ISP per essere risolte. Se il mio ISP non è in grado di risolverlo, restituisce questa pagina dei risultati di ricerca speciale con suggerimenti su ciò che potresti cercare di trovare. Bene, quando vado al mio dominio locale, non ottengo questa pagina dal mio ISP. Ottengo l’errore di cui sopra direttamente dal bordo.

Quindi, mi sembra che Edge stia risolvendo correttamente il dominio, altrimenti sarebbe stato inviato al DNS del mio ISP.

Quindi, penserei che forse Edge non riesce a connettersi alla macchina locale. Ma come ho detto, molti di questi domini locali stanno funzionando bene. Inoltre, l’utilizzo di 127.0.0.1 direttamente in Edge funziona anche. Sono solo questi due nomi di dominio che mi danno un problema. E solo su Edge (tutti gli altri browser funzionano) Qualche idea?

Il server Web è Apache2 per Windows (xampp) se questo è importante.

Inoltre, se apro la finestra di debug in Edge e controllo la rete, non vedo nessuna richiesta uscire affatto.

EDIT: non uso più il file hosts. Ho dnsmasq in esecuzione su una delle mie scatole Linux e sto usando per DNS invece di host. Inoltre, non utilizzo più il loopback (ovviamente dal momento che il DNS si trova su un’altra casella ora), sto usando un indirizzo IP privato interno (192.168 …). Stesso problema.

  • La tua rete può bloccare il loopback come misura di sicurezza in Windows 10.

  • Aprire un prompt dei comandi come amministratore ed eseguirlo per esentare Edge da un loopback:

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

Questo è ufficialmente documentato qui (segui il link quindi fai clic su “Come posso eseguire il debug di localhost?” Nella parte superiore della pagina):

https://developer.microsoft.com/en-us/microsoft-edge/platform/faq/#how-can-i-debug-localhost

C’è un post sul blog che fornisce ulteriori dettagli: https://blogs.msdn.microsoft.com/msgulfcommunity/2015/07/01/how-to-debug-localhost-on-microsoft-edge/

Io (pensavo) l’ho risolto!

Cose che non hanno funzionato:

  • Apportare modifiche alle impostazioni di compatibilità di IE o agli elenchi di compatibilità di Windows
  • Utilizzo di nomi di dominio completi
  • Utilizzo di un indirizzo IP diverso da loopback
  • utilizzando http vs https
  • rimuovere tutti gli script / risorse javascript e cross-site dalla pagina web
  • verifica / deseleziona l’opzione in about: flags per consentire il loopback localhost o l’uso delle impostazioni di compatibilità
  • rimuovendo / aggiungendo / modificando le voci nel TabProcConfig del registro di Windows
  • cancellazione della cronologia di navigazione, cache, cookie

La soluzione: in una svolta contro-intuitiva completa:

Rimuovi i nomi di dominio dall’elenco dei siti attendibili !

  1. Apri la finestra di dialogo Opzioni Internet (basta chiedere a Cortana o usare windowskey + s)
  2. Vai alla scheda Sicurezza
  3. Fare clic sulla zona Siti attendibili
  4. Fai clic sul pulsante Siti
  5. Rimuovi i nomi di dominio con problemi dall’elenco dei siti attendibili
  6. Fare clic su Applica e quindi chiudere la finestra di dialogo
  7. Open Edge (o riavvialo se è già in esecuzione)
  8. Viola

Devo notare che io, usando il buon senso, ho capito che non era solo il fatto che il sito fosse semplicemente presente nella zona “Siti attendibili” che causava il problema. Ho pensato che fosse un po ‘di ambientazione in quella zona. Quindi, prima di eliminare i nomi di dominio dall’elenco “siti”, ho fatto in modo che tutte le impostazioni corrispondessero esattamente alle mie impostazioni della zona Internet (Protezione medio alta, modalità protetta, non richiedono la verifica del server per tutti i siti) e ho anche provato ogni altra combinazione che ho trovato. Non c’era alcuna combinazione di impostazioni di sicurezza della zona che funzionasse. L’unica soluzione era semplicemente rimuovere completamente i domini dall’elenco Siti attendibili. La cosa divertente è che funziona in IE indipendentemente, anche se questa è la finestra di dialogo delle impostazioni Internet per IE. Questo sembra solo influenzare Edge.

Opzioni Internet di Windows 10

Rimuovi siti attendibili dalla zona attendibile

EDIT: due settimane più tardi cambio la mia configurazione in, invece del file hosts, uso dnsmasq su una macchina Linux locale e usandola per DNS. Non sono sicuro che sia successo subito ma a un certo punto Edge ha smesso di funzionare di nuovo! Ho già selezionato la casella di controllo “Consenti loopback” about: flags, quindi non mi aspettavo che la correzione di CheckNetIsolation funzionasse. Ma è successo. La versione Edge è 20.10240.16384.0. Ho usato la correzione da Imansible aprire localhost in Microsoft Edge (Project Spartan) nell’anteprima di Windows 10

EDIT # 2 Un paio di mesi dopo Edge ha nuovamente questo problema. Ho provato entrambe le soluzioni precedenti (e altre) e nessuno dei due lavora più per me. Sto lasciando questa risposta perché presumo di aver avuto due problemi separati.

Edge non supporta gli indirizzi IP VPN quindi qualsiasi soluzione alternativa deve impiegare una sorta di proxy. Ecco alcune soluzioni che ho trovato funzionano:

  1. Installa ed esegui il fiddler . Fiddler fondamentalmente intercetterà la richiesta dal browser per poi inoltrarla alla destinazione. Questa è la soluzione più semplice.

  2. Configura un proxy tramite lo strumento di Windows integrato: netsh . I passaggi di base riguardano l’assegnazione del dominio di sviluppo a un indirizzo IP privato locale disponibile nell’intervallo 127.0.0.0/8 , quindi l’associazione di questo IP all’IP del server Web sulla VPN. Vedi le istruzioni passo passo qui

  3. Usa la funzione di port forwarding di ssh per configurare un proxy. Supponendo che la porta 80 sia disponibile su localhost, aggiungi 127.0.0.1 d.somewebsite.com al tuo file host, quindi esegui il seguente comando ssh -L localhost:80:localhost:80 [email protected] : ssh -L localhost:80:localhost:80 [email protected] , dove devwebserver è l’hostname di il tuo server web di sviluppo (diciamo nella VM o nell’istanza vagabonda o attraverso la VPN). Questa opzione presuppone che tu abbia accesso ssh al server di sviluppo.

La tua soluzione “rimuovi dai siti attendibili” non ha funzionato per me perché i miei siti locali non si trovavano sui miei siti attendibili.

Ma tu mi hai fatto vedere le Opzioni Internet e sono riuscito a far funzionare IIS per i siti locali per me su Windows 10. Questo è quello che ho fatto:

  1. Apri Opzioni Internet e seleziona “Intranet locale”

inserisci la descrizione dell'immagine qui

  1. Clicca su “Siti”

inserisci la descrizione dell'immagine qui

  1. Clicca su “Rileva automaticamente rete intranet”

inserisci la descrizione dell'immagine qui

  1. Clicca OK. Prova il sito della tua macchina locale in Microsoft Edge e ora dovrebbe funzionare.

Potrebbe non applicarsi alla tua situazione, ma comunque. La mia configurazione era la seguente. Una pagina di indirizzo dello spazio pubblico (Internet) stava tentando di caricare una pagina con un indirizzo di spazio privato (intranet) in un iframe e Edge si rifiuterebbe di caricare la pagina della intranet con lo stesso messaggio “Hmm, non possiamo raggiungere questa pagina”, e con “Errore SEC7117” nella console di debug. Risulta che a Edge non piace mescolare le zone Internet / Intranet (per spiegazioni sui motivi, vedere Informazioni sul post del blog in Modalità protetta avanzata ). Edge esegue le tabs in AppContainer separati e le restrizioni di rete di AppContainer sono sensibili alla configurazione di rete.

La mia soluzione era prendere il server che ospitava la pagina intranet in questione fuori dalla rete del dominio assegnando un secondo IP dello spazio privato ad esso, e creare una seconda voce DNS per quell’IP. Il server termina con 2 IP: uno nella rete del dominio e uno alternativo e 2 diverse voci DNS. Edge viene quindi indirizzato all’URL alternativo e inizia a caricare correttamente la pagina della intranet. Sembra che fino a quando le maschere IP del PC e l’URL della pagina in questione non corrispondono, Edge caricherà la pagina.

Il post del blog che ho menzionato contiene informazioni su Loopback-blocked per localhost e la mancanza di funzionalità privateNetworkClientServer in IE. Per quanto posso dire che tutte le informazioni si applicano a Edge.

Nessuna delle altre soluzioni ha funzionato per me. Si scopre che il mio problema si riferisce a VPN. Microsoft Edge non supporta ancora gli indirizzi IP VPN, mentre Internet Explorer 11 lo fa. Impressionante che questo sia ancora un problema a maggio 2016.

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

Attualmente Microsoft Edge sembra non funzionare bene con VPN. E il meccanismo per connettersi a Internet da Microsoft Edge è un po ‘diverso da Internet Explorer 11 e dagli altri browser desktop, che non posso spiegare chiaramente perché non ne so molto.

Pertanto, in base alla situazione attuale, utilizzare Internet Explorer 11.

Quando questo accade a me posso trovare una voce di dominio nella chiave di registro qui sotto che corrisponde al dominio. Quando lo rimuovo le cose funzionano, per un po ‘… Non so perché ma Edge lo aggiungerà alla fine.

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

Nel mio caso, cambiare il tipo di rete da privato a pubblico ha fatto il trucco. Questo è anche riproducibile e cambiando il tipo di rete affidabile cambia lo stato da “funzionante” a ottenere: Http failure response for (unknown url): 0 Unknown Error

Notando dalla tua modifica che stai ora accedendo al sito all’indirizzo 192.168.0.0/16, anziché su 127.0.0.1, suppongo che tu stia correndo un problema con il modo in cui il browser Edge si comporta in modo diverso a seconda dell’interfaccia utilizzata per accedere il sito. Altri browser che ho provato non si comportano in questo modo.

Nel mio ambiente, ho avuto una configurazione di rete solo host Virtualbox e questo ha avuto un NdisDeviceType di 1. Edge mi avrebbe permesso di navigare sui siti tramite questa interfaccia dopo aver cambiato NdisDeviceType a 0. La chiave di registro che ti serve è:

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

Invece di XXXX, hai bisogno della chiave corretta per la tua interfaccia, che ho determinato da “route print” e sottratto 1. Per me era “0016”.

Il valore da cambiare è chiamato *NdisDeviceType . (Questo è un asterisco letterale.) Ho cambiato da 0 a 1 e ho dovuto riavviare Windows per notare la modifica.

La mia risposta è stata raccolta da un post di “Jani L” datato 3 ottobre 2017. Ho anche postato questa soluzione in modo più dettagliato in un’altra domanda StackOverflow . Vedi anche un biglietto Virtualbox 15565 .

Per quanto mi riguarda, sono andato su Opzioni Internet (pannello di controllo), poi su Sicurezza, quindi su intranet locale selezionata e poi su “Rileva automaticamente rete intranet”. Ciò ha messo in grigio le opzioni nidificate di seguito e Edge ha iniziato immediatamente a utilizzare il mio file hosts.

Qualcosa di simile mi è successo, ho appena resettato la rete dalla pagina delle impostazioni di rete e riavviato il mio computer e tutto è tornato a funzionare come prima.