通过隧道(使用ngrok)将localhost暴露给互联网:HTTP错误400:错误的请求; 无效的主机名

从以前版本的问题,有这样的: 浏览网站的IP地址,而不是本地主机 ,这几乎概括了我所做的迄今为止…我有本地IP工作。 然后我发现ngrok,显然我不需要通过IP连接。


我正在做的是暴露我的网站在本地运行在互联网上。 我find了一个工具来做到这一点:ngrok。

在Visual Studio中运行网站,网站在localhost / port#上启动。 我在命令行中运行命令“ngrok http port#”。 一切似乎都很好。 我生成了几个URL,并且ngrok检查url(localhost:4040)正常工作。

唯一的问题是,当我去生成的URL,我得到一个HTTP错误400:错误的请求无效的主机名。 这是一个不同的错误,当我运行“ngrok HTTP错误端口#”,这是一个主机没有发现错误…所以我觉得好事情正在发生。 我只是不能说出什么…

有没有一个步骤,我通过隧道服务暴露我的网站上互联网? 如果有的话,我在ngrok文档中找不到。

用ngrok解决这个问题。 用不可思议的话来说,当一些应用程序看到不同的主机头时,会生气。

运行以下命令应该可以解决问题:

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

然而,这可能不是一个全面的修复(显然至less有一个不同的情况可能会导致这个问题),所以检查出其他的答案

这不适合我。 你可以做到以下几点:

对于IIS Express

在VS 2015中:转到项目中的.vs\config\applicationhost.config文件夹

在VS 2013和更早版本中:转到%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

find说的绑定:

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

对我来说,这是一个运行在5219号港口的项目

改变它

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

IIS Express现在将接受该端口上的所有传入连接。

缺点:您需要以pipe理员身份运行IIS Express。

或者您可以在Ngrok中重写主机头:

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

以下命令将解决问题

 ngrok http -host-header=localhost 8080