首页 > 解决方案 > 从其他机器访问 webpack DevServer 子 URL 时出现 ERR_SSL_PROTOCOL_ERROR

问题描述

我正在尝试从虚拟机访问使用 webpack DevServer 提供的 Web 应用程序,但我只能通过 HTTPS 连接到主 URL - 所有子 URL 都失败并ERR_SSL_PROTOCOL_ERROR出现错误。

这是我的设置:

我正在使用 macOS 的主机上运行 webpack DevServer。我的虚拟机正在运行 Windows 10(桥接网络模式下的 VMware Fusion)。Webpack DevServer 使用自定义自签名 SSL 证书(使用mkcert工具生成)。

这是我的 DevServer 配置(@angular-builders/custom-webpack:dev-server):

          "builder": "@angular-builders/custom-webpack:dev-server",
          "options": {
            "browserTarget": "admin:build",
            "allowedHosts": [
              "localhost",
              "admin.local.slido-staging.com"
            ],
            "host": "0.0.0.0",
            "port": 443,
            "servePath": "/",
            "ssl": true,
            "sslCert": "ssl/server.crt",
            "sslKey": "ssl/server.key"
          },

(由于内部要求,local.slido-staging.com只是一个“DNS别名” ,因此也为 生成了开发证书)。localhost*.local.slido-staging.com

为了使 Web 应用程序也可以通过 HTTPS 从虚拟机访问,我mkcert从主机导出了根证书颁发机构(由 生成),将其导入到 VM Windows 机器上的根证书颁发机构存储中,并添加192.168.2.90 admin.local.slido-staging.com到我的 Windowshosts文件中(192.168.2.90 是我主机的 IP 地址)。

问题:

可以从主机完全访问 Web 应用程序 - HTTPS 适用于主 URLadmin.local.slido-staging.com和子 URL(例如admin.local.slido-staging.com\main.js,请参阅屏幕截图: 主机1 主机2

但是,当我尝试从 VM 访问它时,只有主 URL ( admin.local.slido-staging.com) 通过 HTTPS 加载,所有其他子 URL/资源最终以ERR_SSL_PROTOCOL_ERROR在此处输入图像描述 在此处输入图像描述

这是另一件奇怪的事情 - 尝试通过输入主机的 IP 地址而不是主机名来访问来自 VM 的任何子 URL 有效(启动了 HTTPS 连接,尽管证书与该名称/IP 地址不匹配,因为预期),但尝试通过主机名访问它失败(忽略最后一个屏幕截图上的 4443 端口 - 我只是试图从不同的端口提供应用程序): 在此处输入图像描述 在此处输入图像描述

可能是什么问题呢?我花了几个小时调试它,但没有成功(我也尝试-disable-host-check了 DevServer 的参数,它没有帮助)

更新:

我尝试使用 HTTP 而不是 HTTPS 为应用程序提供服务,但它在 Web 浏览器中也不起作用 - 只是错误消息从 更改ERR_SSL_PROTOCOL_ERRORERR_INVALID_HTTP_RESPONSE. 但是 Wireshark 显示一些数据被提取在此处输入图像描述 在此处输入图像描述

标签: expresssslwebpackhttpswebpack-dev-server

解决方案


该问题是由安装在主机上的最新版本的Cisco AnyConnect 安全移动客户端(4.10) 引起的。将 Cisco AnyConnect 软件降级到 4.9 版后,一切正常。


推荐阅读