web-dev-qa-db-fra.com

Exposer localhost à Internet via la tunnellisation (avec ngrok): Erreur HTTP 400: mauvaise requête; Nom d'hôte invalide

Des versions précédentes de la question, il y a ceci: Parcourir le site Web avec l'adresse IP plutôt que localhost , qui décrit à peu près ce que j'ai fait jusqu'à présent ... J'ai l'IP locale qui fonctionne. Ensuite, j'ai trouvé ngrok et, apparemment, je n'ai pas besoin de me connecter via IP.


Ce que j'essaie de faire, c'est d'exposer mon site Web fonctionnant sur localhost à Internet. J'ai trouvé un outil qui va faire ça: ngrok.

En exécutant le site Web dans Visual Studio, le site Web démarre sur localhost/port #. Je lance la commande "ngrok http port #" dans la ligne de commande. Tout semble bien démarrer. Je génère quelques URL et l'url d'inspection ngrok (localhost: 4040) fonctionne.

Le seul problème est que lorsque je vais aux URL générées, j'obtiens une erreur HTTP 400: mauvaise demande nom d'hôte invalide. Il s’agit d’une erreur différente de celle rencontrée lorsque j’exécute "ngrok http wrongport #", qui correspond à une erreur de l’hôte introuvable. Je pense donc qu’il se passe bien. Je ne peux pas dire quoi ...

Existe-t-il une étape qui me manque pour exposer mon site à Internet via le service de tunneling? Si c'est le cas, je ne le trouve pas dans la documentation de ngrok.

171
donlan

Résoudre ce problème avec ngrok. Pour reprendre les termes de inconshrevable, certaines applications se fâchent lorsqu'elles voient un en-tête d'hôte différent de celui attendu.

L'exécution de la commande suivante devrait résoudre le problème:

ngrok http [port] -Host-header="localhost:[port]"
453
donlan

La commande suivante corrigera le problème

ngrok http -Host-header=localhost 8080
33
Sathish

Cela n'a pas fonctionné pour moi. vous pouvez faire ce qui suit:

Pour IIS Express

Dans VS 2015: accédez au dossier .vs\config\applicationhost.config de votre projet.

Dans VS 2013 et les versions antérieures: Allez à %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

Trouvez la reliure qui dit:

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

Pour moi, c'était un projet sur le port 5219

changez le en

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

IIS Express acceptera désormais toutes les connexions entrantes sur ce port.

Inconvénient: vous devez exécuter IIS Express en tant qu'administrateur.

ou vous pouvez réécrire l'en-tête de l'hôte dans Ngrok:

ngrok.exe http -Host-header=rewrite localhost:5219
32
Stefanvds

La chose la plus simple pour moi a été d'utiliser iisexpress-proxy + ngrok.

J'ai d'abord installé iisexpress-proxy globalement avec npm

npm install -g iisexpress-proxy

Ensuite, je proxy mon localhost avec elle. Disons par exemple que mon site fonctionne sur 3003.

iisexpress-proxy 3003 to 1234512345 est le nouveau port http auquel je souhaite utiliser un proxy.

Ensuite, je peux lancer ngrok dessus.

./ngrok.exe http 12345

Ça marche! ????

Mais je pense que cela ne fonctionne qu'avec http. Pour le moment, je n’utilise pas https pour tester, mais même si cela fonctionne, c’est généralement beaucoup de travail.

0
Reuel Ribeiro