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

时间:2015-05-29 17:09:20

标签: asp.net visual-studio-2012 asp.net-web-api iis-express ngrok

从问题的先前版本开始,有一个:Browse website with ip address rather than localhost,它概述了我到目前为止所完成的工作......我已经完成了本地IP工作。然后我找到了ngrok,显然我不需要通过IP连接。

我要做的是将我在localhost上运行的网站暴露给互联网。我找到了一个可以做到这一点的工具:ngrok。

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

唯一的问题是当我转到生成的URL时,我收到一个HTTP错误400:错误的请求无效的主机名。这是一个不同的错误,当我运行“ngrok http wrongport#”,这是一个主机未找到错误...所以我觉得好事正在发生。我只是不知道是什么......

在通过隧道服务将我的网站暴露给互联网时,我是否缺少一个步骤?如果有,我在ngrok文档中找不到它。

4 个答案:

答案 0 :(得分:411)

使用ngrok来解决这个问题。用不可理解的话来说,一些应用程序在看到不同于预期的主机头时会生气。

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

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

答案 1 :(得分:29)

以下命令将解决问题

ngrok http -host-header=localhost 8080

答案 2 :(得分:12)

对于https,这有效:

ngrok http https://localhost:<PORT> -host-header="localhost:<PORT>"

答案 3 :(得分:0)

对我来说,最简单的方法是使用iisexpress-proxy + ngrok。

首先,我使用npm全局安装iisexpress-proxy

npm install -g iisexpress-proxy

然后我用它代理我的本地主机。假设我的网站在3003上运行。

iisexpress-proxy 3003 to 12345,其中12345是我要代理的新http端口。

然后我可以在其上运行ngrok。

./ngrok.exe http 12345

就可以了!

但是我认为它仅适用于http。现在,我不使用https进行测试,但是即使它可以工作,通常也像往常一样需要大量工作。