插件安装卡在“请求中”是前端假死,需强制刷新绕过缓存、检查Network面板请求状态、修正/etc/hosts绑定可用IP、用wget -S直测下载链路。

插件安装卡在“请求中”是前端假死,不是后端没响应
宝塔面板里点安装插件后长时间停在“请求中”,大概率不是服务器没干活,而是浏览器没收到响应或反复重试失败请求。这个状态通常意味着 AJAX 请求发出去了,但没拿到有效返回(比如 200、400 或超时错误),前端就一直转圈。真实原因往往藏在 Network 面板里——你得自己去看那个 install 请求到底卡在哪一环。
强制刷新浏览器缓存比清 Cookie 更关键
很多用户只清 Cookie 或点“清除浏览数据”,结果无效。宝塔前端 JS 文件(如 /static/js/soft.js)一旦被缓存,可能仍调用旧版接口逻辑,导致请求地址拼错或参数缺失。必须硬性刷新绕过所有本地缓存:
- Windows/Linux:按 Ctrl + Shift + R
- macOS:按 Cmd + Shift + R
- 别依赖右键“重新加载”或 F5 —— 它们不强制更新 JS/CSS
刷新后打开开发者工具 → Network 标签 → 点安装插件 → 找到状态为 pending 或 failed 的请求,看 URL 和 Response 标签页内容。
面板通信节点被 CDN 劫持时,改 /etc/hosts 比换 DNS 有效
宝塔部分请求(如插件元数据、安装脚本下载)走的是域名直连,DNS 设置对它们无效。如果 api.bt.cn 或 download.bt.cn 被污染或指向故障节点,ping api.bt.cn 可能通,但 curl -I https://api.bt.cn/api/plugin 会卡住或返回 403。这时直接绑定可用 IP 最快:
- 查可用 IP:
dig api.bt.cn +short或参考社区已验证的 IP(如103.219.118.174) - 临时写入 hosts:
echo "103.219.118.174 api.bt.cn" >> /etc/hosts - 确认无重复条目:
grep -i 'bt\.cn' /etc/hosts,删掉其他冲突行 - 改完不用重启网络服务,但要执行
bt restart让面板重读配置
注意:不要加 www.bt.cn 或 download.bt.cn 到同一行,每个域名单独一行;IP 写错一个数字就会彻底断联。
手动触发安装脚本下载失败时,用 wget -S 测试真实链路
Network 面板里看到 install.sh 请求卡在 pending,复制完整 URL(形如 https://download.bt.cn/install/plugin/mysql57/install.sh),粘贴到终端执行:
wget -S https://download.bt.cn/install/plugin/mysql57/install.sh
观察输出:
- 若返回
HTTP/1.1 403 Forbidden:CDN 层拦截,需替换域名,例如把download.bt.cn改成ghproxy.com/https://raw.githubusercontent.com/btpanel/bt-plugin/master/ - 若卡住几秒后报
Connection timed out:出口 IP 被拉黑或防火墙未放行 443 出站 - 若返回
HTTP/1.1 200 OK但文件为空:脚本路径已失效,说明插件源元数据过期,需执行bt 19重载软件管理
这一步跳过了面板封装逻辑,直击下载链路本身,能快速区分是面板 bug 还是基础设施问题。











