在开始前我先赘述一下两种启动方式的区别
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 端口。
选择哪种命令取决于你的需求:
- 如果你不需要固定的域名,可以使用 ngrok http 65513。
- 如果你需要一个固定的域名并且希望优化延迟,可以使用 ngrok http --region=ap --domain=xxxx.ap.ngrok.io 8080。
方法一
使用ngrok内网穿透只返回304,invalid host header 这里网上大部分给的方法是 下面这种:
vue.config.js文件中添加如下配置
module.exports = {
devServer: {
compress: true,
disableHostCheck: true
}
}
这种方法不管是单独添加哪一个属性都是行不通的,而网上又大多都是这种做法,不确定是因为老版本可以,新版本不可以的原因,还是其他的,有知道的可以下方评论留言。
方法二、
把 disableHostCheck: true 替换为 historyApiFallback: true, allowedHosts: “all”,
重新配置vue.config.js
devServer: {
allowedHosts: "all",
historyApiFallback: true,
},
这里是另一种配置方式
devServer: {
allowedHosts: "all",
allowedHosts: [
'.ap.ngrok.io'
]
},
上面代码块里的两种得到的都是一种结局
上面的配置都是大部分的配置,在网上搜索了很多, 接下来让我们来看可行的方案
devServer: {
allowedHosts: "all",
webSocketServer: false ,
},
通过这种配置确实是可以访问得到了,但是这个情况的内网穿透地址貌似不能设置自己想要的 端口号的 例如 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的时候搜索文字得到可以得到图片,这种是怎样的匹配机制也是一直困扰着我 哈哈哈