Files

44 lines
1.7 KiB
JavaScript
Raw Permalink Normal View History

2026-05-28 18:37:07 +08:00
/**
* 在目标页面(例如 https://bailian.console.aliyun.com/...)打开 DevTools → Console,
* 将本文件全文粘贴回车执行;按提示输入 bl 监听的本机端口(127.0.0.1:PORT)。
*
* 用于观察:当前 HTTPS 页面能否对 http://127.0.0.1:PORT 发起请求(混合内容 / CORS 等)。
*
* 注意:控制台里若报 Failed to fetch / NetworkError,常见是混合内容被拦截,与 CLI 服务是否正常无关。
*/
void (async () => {
const portStr = window.prompt("请输入本机监听端口(数字,例如 54321)");
if (portStr === null) {
console.log("[probe] 已取消");
return;
}
const port = parseInt(portStr.trim(), 10);
if (!Number.isFinite(port) || port <= 0 || port > 65535) {
console.error("[probe] 无效端口:", portStr);
return;
}
const base = `http://127.0.0.1:${port}`;
const url = `${base}/`;
console.log("[probe] 当前页面:", location.href);
console.log("[probe] 目标 URL:", url);
// 1) 普通 GET(会走 CORS;若混合内容被拦,通常在这里失败)
try {
const res = await fetch(url, { method: "GET", cache: "no-store" });
const text = await res.text();
console.log("[probe] GET 成功 status=", res.status, "body前200字=", text.slice(0, 200));
} catch (e) {
console.error("[probe] GET 失败:", e?.name, e?.message, e);
}
// 2) no-cors:不读响应体;若仍失败,多为混合内容等
try {
const res = await fetch(url, { method: "GET", mode: "no-cors", cache: "no-store" });
console.log("[probe] no-cors GET 完成 opaque type=", res.type, "status(常为0)=", res.status);
} catch (e) {
console.error("[probe] no-cors GET 失败:", e?.name, e?.message, e);
}
})();