Initial commit

This commit is contained in:
2026-06-30 15:14:37 +08:00
commit 15dab96872
311 changed files with 95639 additions and 0 deletions
@@ -0,0 +1,416 @@
# MeshRay - 隐私模式下 MIME 类型错误排查
**最后更新**: 2026-03-24
**问题状态**: 🔴 后端正常,疑似浏览器端问题
---
## 🎯 **问题诊断结果**
### ✅ 后端验证(全部正常)
#### 1. Content-Type 验证
```bash
curl.exe http://localhost:9531/assets/Dashboard-BMrerBTn.js -I
# 返回:
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8 ✅
```
#### 2. 文件内容验证
```bash
curl.exe http://localhost:9531/assets/Dashboard-BMrerBTn.js
# 返回:有效的 JavaScript ES6 模块代码 ✅
import{j as a,t as e,...}from"./element-plus-CWITzeOz.js";...
```
#### 3. 服务器日志验证
```json
{
"status": 200,
"method": "GET",
"path": "/assets/Dashboard-BMrerBTn.js",
"latency": 0
}
```
**结论**: ✅ **后端服务器完全正常!**
---
## 🔍 **可能的原因(隐私模式)**
既然排除了缓存问题,可能的原因有:
### 1️⃣ **浏览器扩展/插件干扰** ⭐⭐⭐
某些浏览器扩展可能会:
- 修改 HTTP 响应头
- 拦截或篡改 JavaScript 加载
- 注入自己的脚本导致冲突
**常见问题的扩展**:
- ❌ 广告拦截器(AdBlock、uBlock Origin
- ❌ 隐私保护工具(Privacy Badger、Ghostery
- ❌ 脚本管理器(Tampermonkey、Violentmonkey
- ❌ 安全类扩展(Norton Safe Web、McAfee WebAdvisor
- ❌ 开发者工具扩展
---
### 2️⃣ **安全软件/防火墙拦截** ⭐⭐
Windows Defender 或其他安全软件可能:
- 拦截本地服务器的 JavaScript 加载
- 修改 HTTP 响应内容
- 阻止动态导入模块
---
### 3️⃣ **浏览器 Bug 或配置问题** ⭐
- 浏览器实验性功能冲突
- 安全策略设置过严
- Service Worker 残留(即使隐私模式)
---
### 4️⃣ **网络代理/中间人攻击防护** ⭐
- 系统级别的 HTTP 代理
- 企业安全策略
- SSL/TLS 证书问题
---
## ✅ **解决方案(按优先级)**
### 方案 A: 禁用所有浏览器扩展 ⭐⭐⭐
#### Chrome/Edge:
1. **打开扩展管理页面**:
- Chrome: `chrome://extensions/`
- Edge: `edge://extensions/`
2. **禁用所有扩展**(临时):
- 关闭所有扩展的开关
3. **重启浏览器**
4. **重新测试**: `http://localhost:9531`
**如果问题解决**:
- 逐个启用扩展,找出罪魁祸首
-`localhost` 添加到扩展的白名单
---
### 方案 B: 使用无痕 + 禁用扩展模式 ⭐⭐⭐
#### Chrome:
```bash
# 完全禁用扩展启动
chrome.exe --incognito --disable-extensions
```
#### Edge:
```bash
# 完全禁用扩展启动
msedge.exe --inprivate --disable-extensions
```
**效果**:
- ✅ 隐私模式
- ✅ 无扩展干扰
- ✅ 最纯净的测试环境
---
### 方案 C: 检查安全软件 ⭐⭐
#### Windows Defender:
1. 打开 **Windows 安全中心**
2. 进入 **病毒和威胁防护**
3. 点击 **管理设置**
4. 临时关闭 **实时保护**
**测试后记得重新开启!**
---
### 方案 D: 使用其他浏览器 ⭐⭐
尝试使用不同内核的浏览器:
- **Chrome** → **Firefox**
- **Edge** → **Chrome**
- **Chrome** → **Brave**
**目的**: 排除特定浏览器的 bug
---
### 方案 E: 开发者工具深度排查 ⭐⭐⭐
#### 步骤 1: 打开开发者工具
`F12``Ctrl + Shift + I`
---
#### 步骤 2: 查看 Network 标签
找到 `Dashboard-BMrerBTn.js` 请求,右键 → **Open in new tab**
**观察**:
- ✅ 应该在新标签中显示 JS 代码
- ❌ 如果显示 HTML,说明路径有问题
---
#### 步骤 3: 查看 Response Headers
点击请求,进入 **Headers** 标签:
**应该看到**:
```http
HTTP/1.1 200 OK
Content-Type: application/javascript; charset=utf-8
Cache-Control: no-cache
```
**如果看到**:
```http
Content-Type: text/html; charset=utf-8
```
说明浏览器接收到的确实是 HTML,问题在传输过程中被修改了。
---
#### 步骤 4: 查看 Initiator
**Network** 标签中找到 `Dashboard-BMrerBTn.js`,查看 **Initiator** 列:
**应该显示**:
```
init.js:line_number
```
这说明是哪个文件动态导入的。
---
#### 步骤 5: Console 详细错误
进入 **Console** 标签,点击错误详情:
**可能的错误**:
```javascript
Failed to load module script: Expected a JavaScript-or-Wasm module script
but the server responded with a MIME type of "text/html".
```
**点击错误堆栈**,查看是哪个文件发起的请求。
---
### 方案 F: 使用 Firefox 测试 ⭐⭐⭐
**为什么 Firefox**
- Firefox 对 MIME 类型检查更严格
- 扩展生态不同
- 可以排除 Chrome 内核特定问题
**下载**: https://www.mozilla.org/firefox/download/
**测试**:
1. 安装 Firefox
2. 访问 `http://localhost:9531`
3.`F12` 查看错误
**结果分析**:
- ✅ 如果 Firefox 正常 → Chrome/Edge 扩展问题
- ❌ 如果 Firefox 也报错 → 系统级别问题
---
## 🛠️ **高级调试技巧**
### 技巧 1: 使用 curl 模拟浏览器
```bash
# 完整请求,包含 User-Agent
curl.exe -v http://localhost:9531/assets/Dashboard-BMrerBTn.js ^
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" ^
-H "Accept: */*" ^
-H "Referer: http://localhost:9531/"
```
**查看完整响应头**:
```http
< HTTP/1.1 200 OK
< Content-Type: application/javascript; charset=utf-8
```
---
### 技巧 2: 检查是否有中间代理
```bash
# PowerShell
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" |
Select-Object ProxyEnable, ProxyServer
```
**如果启用了代理**:
```
ProxyEnable : 1
ProxyServer : xxx.xxx.xxx.xxx:port
```
需要检查代理是否修改了响应。
---
### 技巧 3: 使用 Fiddler/Charles 抓包
**Fiddler Classic** (免费):
1. 下载安装:https://www.telerik.com/fiddler
2. 启动 Fiddler
3. 访问 `http://localhost:9531`
4. 查看实际传输的 HTTP 响应
**优势**:
- ✅ 可以看到完整的 HTTP 请求/响应
- ✅ 可以发现是否有中间修改
- ✅ 可以重放请求进行测试
---
## 📊 **排查流程图**
```mermaid
graph TD
A[隐私模式仍报错] --> B{禁用所有扩展}
B -->|解决 | C[✅ 扩展问题]
B -->|未解决 | D{使用 --disable-extensions}
D -->|解决 | E[✅ 扩展残留]
D -->|未解决 | F{换 Firefox 测试}
F -->|正常 | G[✅ Chrome 内核问题]
F -->|仍报错 | H{检查安全软件}
H -->|解决 | I[✅ 安全软件拦截]
H -->|未解决 | J{使用 Fiddler 抓包}
J -->|响应被修改 | K[✅ 中间代理问题]
J -->|响应正常 | L[❓ 浏览器解析 bug]
```
---
## 🎯 **快速诊断命令**
### 一键禁用所有扩展(Chrome:
```powershell
# 关闭 Chrome
Stop-Process -Name "chrome" -Force
# 以禁用扩展模式启动
Start-Process "chrome.exe" -ArgumentList "--incognito","--disable-extensions","http://localhost:9531"
```
---
### 检查当前扩展列表:
```powershell
# Chrome 扩展
Get-ChildItem "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Extensions" |
Select-Object Name
# Edge 扩展
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Extensions" |
Select-Object Name
```
---
## 📝 **检查清单**
完成以下检查定位问题:
- [ ] ✅ curl 测试返回正确的 Content-Type
- [ ] ✅ 服务器日志显示 200 OK
- [ ] ⏳ 已禁用所有浏览器扩展
- [ ] ⏳ 已使用 `--disable-extensions` 参数
- [ ] ⏳ Firefox 测试结果
- [ ] ⏳ 已检查安全软件设置
- [ ] ⏳ 已检查代理设置
- [ ] ⏳ Fiddler 抓包验证
---
## 🎉 **预期结果**
### 正常情况下应该看到:
**Network 标签**:
```
Dashboard-BMrerBTn.js js 15.2 kB 200 OK application/javascript
```
**Console 标签**:
```
(无错误信息)
```
**页面显示**:
```
✅ Dashboard 统计卡片正常
✅ Network 列表数据完整
✅ 所有组件正常渲染
```
---
## 📚 **相关资源**
- [Chrome 扩展管理](chrome://extensions/)
- [Edge 扩展管理](edge://extensions/)
- [Fiddler 下载](https://www.telerik.com/fiddler)
- [Firefox 下载](https://www.mozilla.org/firefox/download/)
---
## 💡 **下一步建议**
### 立即执行:
1. **禁用所有扩展**
```bash
chrome.exe --incognito --disable-extensions http://localhost:9531
```
2. **测试是否正常**
- 如果正常 → 逐个启用扩展找问题
- 如果不正常 → 继续下一步
3. **使用 Firefox 测试**
- 排除 Chrome 内核特定问题
4. **联系浏览器支持**
- 如果所有方法都无效
- 可能是浏览器本身的 bug
---
**状态**: 🔍 **正在排查,后端已确认正常**
**下一步**: 禁用所有浏览器扩展测试
*MeshRay - 坚持不懈,直到找到根本原因!* ✨🔧