【已解决】多种方式最新解决Invalid Host header(无效的主机头)服务器域名访问出现的错误

🐱 个人主页:不叫猫先生,公众号:前端舵手
🙋‍♂️ 作者简介:CSDN博客专家、内容合伙人,2023新星计划导师,前端领域优质创作者,共同学习共同进步,一起加油呀!
📢 资料领取:前端进阶资料可以找我免费领取

在这里插入图片描述

Invalid Host header这个报错在网上有很多文章介绍解决办法,但是很多都没有没有用,这里为兄弟们排下坑,本文的解决方法已经验证没有问题,兄弟们可放心借鉴.

一、报错现象

yarn serve 项目启动成功,但是页面显示Invalid Host header
在这里插入图片描述

二、报错原因分析

新版的webpack-dev-server出于安全考虑会默认检查hostname,用于防止不受信任的主机访问DevServer,当浏览器发出请求时,它会会检查请求中的主机头,若hostname 没有配置在内,则中断访问。

三、项目环境

Vue3:3.0.0
Npm:6.14.17
Node:16.13.0

四、解决方案

1、allowedHosts

设置allowedHosts,这个选项是设置允许访问开发服务器的主机列表。将其设置为 all 表示允许任何主机访问开发服务器。这个选项与主机检查相关,但它更精确地控制哪些主机可以访问开发服务器,而不是完全禁用主机检查。也可以设置多个主机。具体查看官方文档allowedHosts官方介绍

  • 设置所有主机列表
allowedHosts: "all"
  • 设置部分主机列表
allowedHosts: ['xxx.com','xxx.com']

具体解决如下:

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  devServer: {
    host: 'localhost', 
    port: 8089,
    historyApiFallback: true,
    allowedHosts: "all"
  }
})

2、disableHostCheck

在vue-cli版本为2.x的情况下该设置生效disableHostCheck允许在开发服务器中禁用主机检查。默认情况下,Webpack DevServer会检查请求的主机是否与配置中的主机匹配,以增加安全性。如果配置中没有明确指定主机(host),Webpack DevServer将只允许本地主机访问,以防止潜在的安全风险。通过将 disableHostCheck 设置为 true,可以允许来自其他主机的请求,但这可能会增加潜在的安全风险,因此谨慎使用。

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave: false,
  disableHostCheck:true,
  devServer: {
    host: 'localhost', 
    port: 8089
  }
})

如果vue-cli版本为3.x使用的时候会报下面的错误:

ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema.
         - options has an unknown property 'disableHostCheck'. These properties are valid:
           object { allowedHosts?, bonjour?, client?, compress?, devMiddleware?, headers?, historyApiFallback?, host?, hot?, http2?, https?, ipc?, liveReload?, magicHtml?, onAfterSetupMiddleware?, onBeforeSetupMiddleware?, onListening?, open?, port?, proxy?, server?, setupExitSignals?, setupMiddlewares?, static?, watchFiles?, webSocketServer? }

在这里插入图片描述
所以需要看清自己的版本。

五、拓展

1、historyApiFallback

上面代码其中historyApiFallback用于在使用 Vue Router 或类似的前端路由库时,处理路由切换时的页面刷新问题。当你使用浏览器的前进和后退按钮或手动输入URL时,Vue Router或其他路由库会在前端进行路由切换,但如果没有合适的配置,刷新页面时会导致404错误。

historyApiFallback:true

2、transpileDependencies

transpileDependencies用于配置需要通过 Babel 转译的依赖模块。默认情况下(false),Vue CLI Babel 只会转译应用程序代码,而不会转译依赖模块(node_modules)中的代码。但有些依赖模块可能包含 ES6+ 语法,如果你需要转译这些依赖模块,可以使用 transpileDependencies 进行配置。但是transpileDependencies: true 只会广度遍历编译三方依赖,对于依赖的依赖则不会处理。

transpileDependencies:true
transpileDependencies:['xxxx']//制定特定的依赖进行转译

3、lintOnSave

lintOnSave 用于控制在开发和保存文件时是否执行 ESLint 静态代码检查。ESLint 可以帮助你捕获潜在的代码问题和风格违规。

如果将 lintOnSave 设置为 true,则在保存文件时,Vue CLI 会自动运行 ESLint 检查,如果发现问题,将会在开发过程中报告错误和警告。
如果将 lintOnSave 设置为 false,则禁用了自动的 ESLint 检查,你需要手动运行检查。

  • 84
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 91
    评论
### 回答1: "Invalid Host header" 是一个常见的错误信息,通常发生在 Web 应用程序中。它表示 HTTP 请求中的 Host header主机)与实际请求的主机不匹配,这可能是由于代理服务器或负载均衡器等网络设备引起的。 解决此问题的一种方法是检查您的 Web 应用程序配置文件中的主机名是否正确,并确保它与实际的请求主机名匹配。另外,您还可以尝试以下几种方法: 1. 在您的 Web 应用程序配置文件中添加一个可信的主机名列表。这将确保只有从列表中授权的主机名才能访问您的应用程序。 2. 检查代理服务器或负载均衡器的配置,并确保它们正确地转发主机。 3. 如果您使用了 SSL 加密,请确保您的 SSL 证书中包含正确的主机名,并且证书已经正确安装。 4. 尝试在您的 Web 应用程序中禁用 Host header 检查。请注意,这可能会带来安全风险,因为攻击者可以使用伪造的 Host header 来绕过某些安全措施。 总之, "Invalid Host header" 错误通常是由于配置问题或网络设备设置不正确引起的。通过检查您的应用程序配置并确保正确的主机名,您应该能够解决此问题。 ### 回答2: Invalid Host header问题通常是由于在HTTP请求中出现无效的或不受支持的Host引起的。这个问题主要出现在Web服务器的配置问题或反向代理的设置上。解决这个问题可以采取以下步骤: 1. 检查Host的值:确保Host的值正确且有效。它应该是有效的域名或IP地址,并与服务器配置或反向代理的设置相匹配。 2. 检查服务器配置:检查服务器的配置文件,如Apache的httpd.conf或Nginx的nginx.conf,确保配置中没有错误或冲突的设置。查看是否缺少必要的虚拟主机配置或是否存在重复的虚拟主机配置。 3. 检查反向代理设置:如果使用了反向代理服务器(如Nginx或HAProxy),确保代理服务器的配置正确。检查代理服务器的反向代理规则,确保请求的Host与规则匹配。 4. 检查DNS解析:如果Host使用的是域名而不是IP地址,确保域名可以正确解析为相应的IP地址。可以使用nslookup或dig等工具来验证DNS解析是否正常。 5. 检查防火墙设置:防火墙可能会阻止来自无效Host的请求。确保防火墙允许合法的Host通过,并且没有误拦截有效请求。 6. 更新软件版本:有时Invalid Host header问题可能是由软件版本中的错误或漏洞引起的。尝试升级服务器软件或代理服务器软件到最新版本,以修复可能存在的问题。 如果按照以上步骤仍无法解决Invalid Host header问题,建议咨询服务器管理员或Web开发人员寻求更详细的帮助。 ### 回答3: Invalid Host header无效主机错误通常出现在使用反向代理或负载均衡器时。它表示请求的主机服务器配置不匹配,导致服务器拒绝该请求。以下是解决错误的几种方法: 1. 配置服务器:在服务器上配置正确的主机,确保与请求中的主机一致。例如,如果使用Nginx作为反向代理服务器,可以使用`proxy_set_header Host $host;`将请求中的主机传递给后端服务器。 2. 检查DNS解析:检查DNS配置,确保域名正确解析到正确的IP地址。如果域名指向了错误的地址,服务器将无法匹配请求的主机,因此会出现Invalid Host header错误。 3. 更新应用程序或框架配置:有些应用程序或框架需要在配置文件中指定有效的主机。查找并更新相应的配置文件,确保主机与请求一致。 4. 检查代理服务器配置:如果在反向代理或负载均衡器之前有其他代理服务器,确保这些代理服务器正确传递主机。如果代理服务器配置不正确,将会导致Invalid Host header错误。 5. 使用TLS/SSL终止:如果使用TLS/SSL终止,确保在代理服务器中配置了正确的主机。终止TLS/SSL的代理服务器需要正确地处理主机,才能将请求正确转发给后端服务器。 6. 检查请求是否正确:有时Invalid Host header错误是由于客户端发送了具有无效主机的请求导致的。检查请求的主机是否正确,并确保请求中没有其他错误引起的问题。 总之,解决Invalid Host header错误的方法通常包括配置服务器、检查DNS解析、更新应用程序或框架配置、检查代理服务器配置、使用TLS/SSL终止以及确保请求正确。根据具体情况选择适当的解决方法,可以解决错误

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 91
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不叫猫先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值