86

В предыдущих версиях вопроса есть следующее: Browse website with ip address rather than localhost, в котором изложено многое, что я сделал до сих пор ... У меня работает локальный IP-адрес. Затем я нашел ngrok, и, по-видимому, мне не нужно подключаться через IP.Отображение локального хоста в Интернете через туннелирование (с использованием ngrok): ошибка HTTP 400: неверный запрос; Недопустимое имя хоста


То, что я пытаюсь сделать, это разоблачить мой сайт, запущенный на локальном хосте в Интернете. Я нашел инструмент, который сделает это: ngrok.

Запуск веб-сайта в визуальной студии, веб-сайт запускается на localhost/port #. Я запускаю команду «ngrok http port #» в командной строке. Кажется, все начинается хорошо. Я создаю пару URL-адресов, и работает url проверки ngrok (localhost: 4040).

Единственная проблема заключается в том, что, когда я перехожу к сгенерированным URL-адресам, я получаю ошибку HTTP 400: неверный идентификатор хоста. Это другая ошибка, чем при запуске «ngrok http wrongport #», который является ошибкой не найденной хостом ... поэтому я думаю, что что-то хорошее происходит. Я просто не могу сказать, что ...

Есть ли какой-то шаг, который мне не хватает при экспонировании моего сайта в Интернет через туннелирование? Если есть, я не могу найти его в документации ngrok.

ответ

237

Troubleshot эта проблема с ngrok. В словах непонятно, некоторые приложения злятся, когда видят другой заголовок узла, чем ожидалось.

Выполнение следующей команды должно решить эту проблему:

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

однако, это не может быть всеобъемлющей исправить (по-видимому, по крайней мере, один другой случай может вызвать эту проблему), поэтому проверить другой ответ, скважина

+1

Спасибо. Я ранее следил за инструкциями от Devin Rader, подробно описанными здесь, но теперь это делается проще. https://www.twilio.com/blog/2014/03/configure-windows-for-local-webhook-testing-using-ngrok.html – sobelito

+0

Это решение также работает, если у вас возникли проблемы с добавлением другого привязки к applicationHost. config (vs2015/iisexpress). Вам не нужно добавлять один, просто используйте этот ответ. Наконец, если вы заплатили за собственный домен, чтобы не менять адрес каждый раз, просто добавьте -subdomain = mysubdomain в ответ выше. – trevorc

+0

Tricky решил для меня! :) – mthama

19

Это не сработало для меня. вы можете сделать следующее:

для IIS Express

В VS 2015: Перейти к папке .vs\config\applicationhost.config в проекте

В VS 2013 и ранее: Перейти к %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

Найти обязательная ссылка:

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

Для меня это был проект, работающий на порту 5219

изменить его на

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

IIS Express теперь будет принимать все входящие соединения на этом порту.

Недостаток: вам нужно запустить IIS Express в качестве администратора.

или вы могли бы переписать заголовок узла в Ngrok:

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

После команды исправит этот вопрос

ngrok http -host-header=localhost 8080