express - 从其他机器访问 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
,请参阅屏幕截图:
但是,当我尝试从 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_ERROR
为ERR_INVALID_HTTP_RESPONSE
. 但是 Wireshark 显示一些数据被提取
解决方案
该问题是由安装在主机上的最新版本的Cisco AnyConnect 安全移动客户端(4.10) 引起的。将 Cisco AnyConnect 软件降级到 4.9 版后,一切正常。
推荐阅读
- rust - 在单个图像 Rust 上执行多个图像::imageops 的最快方法
- java - Heroku 指标 - 内存使用情况
- physics - 模拟圆周运动/切向加速度
- javascript - 如何拆分逗号并将字符串放入javascript数组?
- javascript - setState 不适用于对象的对象
- python - 在函数 args 中定义类型?
- vue.js - vue-bootstrap-datetimepicker 输入输入权限块,没有禁用和只读
- c++ - “通过移动捕获”不会阻止通过引用捕获
- python - 如何在不影响 QProgressBar 动画的情况下更改 PyQt5 进度条块的颜色
- automation - 如何将文件列表(自动化)上传到 FTP 服务器?