首页 文章

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

提问于
浏览
126

从以前版本的问题来看,有这样的: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 回答

  • 16

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

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

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

    however, this may not be a comprehensive fix (apparently at least one different case can cause this issue), so check out the other answer as well

  • 28

    脚步 .

    它将为您的应用程序创建一个隧道 .

    谢谢 .

  • 343

    以下命令将解决问题

    ngrok http -host-header=localhost 8080
    
  • -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
    

相关问题