86

Dalle precedenti versioni della domanda, c'è questo: Browse website with ip address rather than localhost, che delinea quasi tutto ciò che ho fatto finora ... Ho l'IP locale funzionante. Poi ho trovato ngrok, e apparentemente non ho bisogno di connettermi tramite l'IP.Esposizione di localhost a Internet tramite tunneling (utilizzando ngrok): errore HTTP 400: richiesta errata; nome host non valido


Quello che sto cercando di fare è esporre il mio sito Web in esecuzione su localhost a Internet. Ho trovato uno strumento che farà questo: ngrok.

Eseguendo il sito Web in Visual Studio, il sito Web si avvia su localhost/porta #. Eseguo il comando "ngrok http port #" nella riga di comando. Tutto sembra partire bene. Genero un paio di URL e l'url di ispezione di ngrok (localhost: 4040) funziona.

L'unico problema è che quando vado agli URL generati, ottengo un errore HTTP 400: richiesta errata nome host non valido. Questo è un errore diverso rispetto a quando eseguo "ngrok http wrongport #", che è un errore di host non trovato ... quindi penso che stia succedendo qualcosa di buono. Non so proprio cosa ...

C'è un passaggio che mi manca nell'esporre il mio sito a Internet tramite il servizio di tunneling? Se c'è, non riesco a trovarlo nella documentazione di ngrok.

risposta

237

Troubleshot questo problema con ngrok. Nelle parole di incongruenza, alcune applicazioni si arrabbiano quando vedono un'intestazione host diversa dal previsto.

eseguendo il comando seguente dovrebbe risolvere il problema:

ngrok http [port] -host-header="localhost:[port]" 

tuttavia, questo non può essere una soluzione completa (a quanto pare almeno un caso diverso può causare questo problema), in modo da controllare l'altra risposta come bene

+1

Grazie. In precedenza ho seguito le istruzioni di Devin Rader dettagliate qui, ma ora è più semplice. https://www.twilio.com/blog/2014/03/configure-windows-for-local-webhook-testing-using-ngrok.html – sobelito

+0

Questa soluzione funziona anche in caso di problemi con l'aggiunta di un'altra associazione all'applicazione. config (vs2015/iisexpress). Non è necessario aggiungerne uno basta usare questa risposta. Infine, se hai pagato un dominio personalizzato per evitare di cambiare l'indirizzo ogni volta basta aggiungere -sottodominio = mysubdomain alla risposta sopra. – trevorc

+0

Tricky risolto per me! :) – mthama

19

Questo non ha funzionato per me. si potrebbe procedere come segue:

Per IIS espresso

In VS 2015: Vai alla cartella .vs\config\applicationhost.config nel progetto

in VS 2013 e precedenti: Vai %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

Trova l'associazione che dice:

<binding protocol="http" bindingInformation="*:5219:localhost" /> 

Per me è stato un progetto in esecuzione sulla porta 5219

cambiamento a

<binding protocol="http" bindingInformation="*:5219:" /> 

IIS espresso sarà ora accettare tutte le connessioni in entrata su quella porta.

Svantaggio: è necessario eseguire IIS Express come amministratore.

o si potrebbe riscrivere l'intestazione host in Ngrok:

ngrok.exe http -host-header=rewrite localhost:5219 
9

seguente comando risolverà il problema

ngrok http -host-header=localhost 8080 
Problemi correlati