Выявление локального хоста в Интернете через туннелирование (с использованием 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

Шаги.

  1. Запустите команду на своей консоли из каталога ngrok.exe. http-порт ngrok, т.е. http 80 ngrok https://www.screencast.com/t/oyuEPlR6Z Set

  2. URL-адрес Ngrok для вашего приложения.

Это создаст туннель для вашего приложения.

Благодарю.