Выявление локального хоста в Интернете через туннелирование (с использованием ngrok): ошибка HTTP 400: неверный запрос; неверный адрес
В предыдущих версиях вопроса есть следующее: Обзор веб-сайта с IP-адресом, а не локальным хостом, который в значительной степени описывает то, что я сделал до сих пор. У меня есть локальный IP-адрес. Затем я нашел ngrok, и, по-видимому, мне не нужно подключаться через IP.
То, что я пытаюсь сделать, это разоблачить мой сайт, запущенный на локальном хостинге в Интернете. Я нашел инструмент, который сделает это: ngrok.
Запуск веб-сайта в визуальной студии, веб-сайт запускается на localhost/port #. Я запускаю команду "ngrok http port #" в командной строке. Кажется, все начинается хорошо. Я создаю пару URL-адресов, и работает url проверки ngrok (localhost: 4040).
Единственная проблема заключается в том, что, когда я перехожу к сгенерированным URL-адресам, я получаю ошибку HTTP 400: неверный неверный идентификатор хоста. Это другая ошибка, чем при запуске "ngrok http wrongport #", который является ошибкой не найденной хостом... поэтому я думаю, что что-то хорошее происходит. Я просто не могу сказать, что...
Есть ли какой-то шаг, который мне не хватает при экспонировании моего сайта в Интернет через туннелирование? Если есть, я не могу найти его в документации ngrok.
Ответы
Ответ 1
Устраните эту проблему с помощью ngrok. По словам неопровержимого, некоторые приложения сердятся, когда видят заголовок хоста, отличный от ожидаемого.
Выполнение следующей команды должно решить проблему:
ngrok http [port] -host-header="localhost:[port]"
Ответ 2
Это не сработало для меня.
вы можете сделать следующее:
Для 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
Ответ 3
Следующая команда исправит проблему
ngrok http -host-header=localhost 8080
Ответ 4
Самым простым для меня было использование iisexpress-proxy + ngrok.
Сначала я устанавливаю iisexpress-proxy
глобально с помощью npm.
npm install -g iisexpress-proxy
Тогда я прокси мой локальный хост с ним. Скажем, например, мой сайт работает на 3003
.
iisexpress-proxy 3003 to 12345
где 12345
- это новый http-порт, iisexpress-proxy 3003 to 12345
которому я хочу подключиться.
Тогда я могу запустить ngrok на нем.
./ngrok.exe http 12345
Это просто работает! 😃
Но я думаю, что это работает только с http
. Прямо сейчас я не использую https
для тестирования, но даже если он работает, обычно это много работы, как всегда.
Ответ 5
Шаги.
-
Запустите команду на своей консоли из каталога ngrok.exe. http-порт ngrok, т.е. http 80 ngrok https://www.screencast.com/t/oyuEPlR6Z Set
-
URL-адрес Ngrok для вашего приложения.
Это создаст туннель для вашего приложения.
Благодарю.