Vuejs 应用程序显示无效的主机标头错误循环

Posted

技术标签:

【中文标题】Vuejs 应用程序显示无效的主机标头错误循环【英文标题】:Vuejs app showing Invalid host header error loop 【发布时间】:2018-12-07 14:34:22 【问题描述】:

我在自己的开发服务器上运行了一个 vuejs 应用程序,现在我可以通过机器的公共 IP 访问该站点,但是在使用 nginx 将它指向一个域后,它在控制台中显示一个错误循环

error in console

无效的主机头 [WDS] 断开连接!

由于这个脚本,样式注入和自动重新加载不起作用。

开发服务器配置

dev: 
  assetsSubDirectory: "static",
  assetsPublicPath: "/",
  disableHostCheck: true,
  host: "0.0.0.0", // '192.168.2.39',//can be overwritten by 
  process.env.HOST
  port: 8080,
  autoOpenBrowser: false,
  errorOverlay: false,
  notifyOnErrors: false,
  poll: true, 
  devtool: "cheap-module-source-map",
  cacheBusting: true,
  cssSourceMap: true
,

域的 nginx 配置

server

  listen 80 ;
  listen [::]:80;
  server_name prajin.prakash.com;
  location / 
        proxy_pass http://localhost:8081;
  

【问题讨论】:

【参考方案1】:

我相信你需要改变vue.config.js

module.exports = 
  devServer: 
    disableHostCheck: true
  

【讨论】:

拯救了我的一天。非常感谢! 有时已经有其他节点了,所以请务必将其附加到根目录 - 例如,pwa: , devServer: - 一开始我错过了...看到这个我意识到,呃......大声笑 谢谢道格拉斯。我只是浪费了一个小时试图弄清楚这一点。不知道为什么 webpack 会浪费这么多时间,它应该是为了帮助人们不浪费时间。 可能会导致安全漏洞 - 请参阅下面的答案 (***.com/a/62116155/3467734) 如果可以的话,我会支持更多。 vue.configs.js 周围的文档很难找到。 devServer:代理是另一个非常有用的。【参考方案2】:

一般不建议disableHostCheck: true(可能会导致安全问题),除非您了解并接受风险。

请尝试如下设置 webpack 配置:

在 vue.config.js 的应用根目录中添加

module.exports = 
  devServer: 
    public: 'subdomain.domain.ext:port'
  
;

注意:适用于在 vuejs + nginx 上运行的应用程序

【讨论】:

应该是公认的答案,因为它解释了如何和为什么 如果这个答案不会导致无效的主机错误,我会很高兴。【参考方案3】:

2022 年 1 月更新:

在项目根目录下创建vue.config.js

然后,将此代码粘贴到 vue.config.js

module.exports = 
  devServer: 
    disableHostCheck: true
  

*不要忘记重启服务器,否则更改不会反映。

【讨论】:

【参考方案4】:

对不起,这是我的错误,我忘记在其中添加 disableHostCheck 变量

构建/webpack.dev.conf.js

添加以下内容解决了我的问题

disableHostCheck: config.dev.disableHostCheck, 

【讨论】:

【参考方案5】:

我的配置在:projects/vue-try/node_modules/@vue/cli-service/lib/options.js

第 130+ 行

开发服务器: disableHostCheck:真, 主机:'0.0.0.0', https:假的

【讨论】:

【参考方案6】:

我相信你需要像这样更改 nginX 配置

server 
  server_name prajin.prakash.com;
  listen 80;
  listen [::]:80;

  location / 
    proxy_pass http://localhost:8080;
    proxy_http_version 1.1;
  
  location /sockjs-node 
    proxy_pass http://localhost:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
  

编辑:

为 WebSocket 和普通请求添加了单独的代理。

【讨论】:

添加此站点后,该站点将无法运行并引发错误。 504 网关超时 nginx/1.10.3 (Ubuntu) disableHostCheck: true, 解决了我的问题,无论如何感谢您的重播..

以上是关于Vuejs 应用程序显示无效的主机标头错误循环的主要内容,如果未能解决你的问题,请参考以下文章

Heroku“无效主机标头”主机配置中的ReactJS APP?

无效主机/ Referer请求标头的最合适的HTTP状态代码是什么?

VueJs 前端的无效 CSRF 令牌错误(symfony 5)

错误:无效的 HTTP_HOST 标头:'/webapps/../gunicorn.sock'

如何在Balena上运行的raspberry pi 3上修复无效的ELF标头错误?

邮递员控制台错误标头内容包含无效字符