webpack 关于内网穿透报错处理? invalid host header 解决办法

591 阅读3分钟

在开始前我先赘述一下两种启动方式的区别

ngrok http 8080

这个命令启动一个 HTTP 隧道,默认情况下,ngrok 会分配一个随机的子域名。例如,ngrok 可能会给你一个像 abcd1234.ngrok.io 这样的 URL。 它会将流量从该 URL 转发到本地机器上的 65513 端口。

ngrok http --region=ap --domain=xxxx.ap.ngrok.io 8080

这个命令指定了更多的选项,包括区域和域名。

1、--region=ap:指定 ngrok 的区域为亚太地区(ap)。这可以帮助减少延迟,因为它会选择离你最近的 ngrok 数据中心。

2、--domain=xxxx.ap.ngrok.io:指定了一个自定义子域名(前提是你有权限使用该域名)。这样你可以使用一个固定的 URL,而不是每次启动 ngrok 时都获得一个随机的子域名。它会将流量从指定的域名 xxxx.ap.ngrok.io 转发到本地机器上的 8080 端口。

选择哪种命令取决于你的需求:

  1. 如果你不需要固定的域名,可以使用 ngrok http 65513。
  2. 如果你需要一个固定的域名并且希望优化延迟,可以使用 ngrok http --region=ap --domain=xxxx.ap.ngrok.io 8080。

5948.png

invalid.png

方法一

使用ngrok内网穿透只返回304,invalid host header 这里网上大部分给的方法是 下面这种:

vue.config.js文件中添加如下配置

module.exports = {
 
devServer: {
             compress: true,
             disableHostCheck: true
        }
 
}

2241.png

这种方法不管是单独添加哪一个属性都是行不通的,而网上又大多都是这种做法,不确定是因为老版本可以,新版本不可以的原因,还是其他的,有知道的可以下方评论留言。

方法二、

把 disableHostCheck: true 替换为 historyApiFallback: true, allowedHosts: “all”,

重新配置vue.config.js

  devServer: {
        allowedHosts: "all",
        historyApiFallback: true,

  },
  
  
  这里是另一种配置方式
  
    devServer: {
             allowedHosts: "all",
             allowedHosts: [
                 '.ap.ngrok.io'
             ]
  },

上面代码块里的两种得到的都是一种结局

2639.png

上面的配置都是大部分的配置,在网上搜索了很多, 接下来让我们来看可行的方案


  devServer: {
    allowedHosts: "all",
    webSocketServer: false ,
  },
  

5801.png

通过这种配置确实是可以访问得到了,但是这个情况的内网穿透地址貌似不能设置自己想要的 端口号的 例如 8888、 6501 这种,通过 ngrok http --region=ap --domain=xxxx.ap.ngrok.io 8080 只能打开默认端口号 8080 ,要设置自定义其他端口号就不得行,只能通过 ngrok http xxxx(端口号) 启动 自动给你匹配对应的内网穿透地址

结语

到这里问题基本解决了, 上面所说的都是 通过 ngrok http --region=ap --domain=xxxx.ap.ngrok.io 8080 使用 指定的域名进行访问的,我不确定不指定域名是否前面一两三种方法是否可行,大家可以自行去实验。有啥错误、或者想法大家在评论区尽情挥洒 😊😊😊!

哦对! 这里还引出一个问题,我google的时候搜索文字得到可以得到图片,这种是怎样的匹配机制也是一直困扰着我 哈哈哈