From 2b1d983678e465e3d8e5eeb7d15937c14682eb23 Mon Sep 17 00:00:00 2001 From: 18628386721 <18628386721@163.com> Date: Tue, 28 Jul 2026 14:07:00 +0800 Subject: [PATCH] =?UTF-8?q?Web=20=E5=BC=80=E5=8F=91=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E6=98=BE=E5=BC=8F=E7=BB=91=20IPv4=20=E5=9B=9E?= =?UTF-8?q?=E7=8E=AF=20=E2=80=94=E2=80=94=20127.0.0.1=20=E4=BB=8E=E5=89=8D?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=BF=9E=E4=B8=8D=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 不给 `server.host` 时 vite 走 Node 默认解析,在本机上**只绑到 `[::1]`**: `http://127.0.0.1:5273` 连不上,而 `localhost` 通不通取决于浏览器/系统把它解析成哪个栈。 同一台机器上表现为「有时打得开有时打不开」,查起来极费劲。 绑 `127.0.0.1` 之后两种写法都通,且不暴露到局域网(要给别的设备访问再显式 `--host`, 那是另一个决定)。代理目标也一并从 `localhost:8787` 换成 `127.0.0.1:8787`, 免得同一处歧义在代理侧再来一遍。 实测:改前 `127.0.0.1:5273` → 连不上、`[::1]:5273` → 200; 改后 `127.0.0.1` 与 `localhost` 都 200,且只靠配置生效、不必带命令行参数。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m --- apps/web/vite.config.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index 7bf828b..cf4aff3 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -20,8 +20,18 @@ export default defineConfig({ }, server: { port: 5173, + /* + * 显式绑 IPv4 回环。 + * + * 不给 host 时 vite 走 Node 的默认解析,在本机上只绑到 `[::1]` —— 于是 + * `http://127.0.0.1:5273` 直接连不上,而 `localhost` 通不通取决于浏览器/系统 + * 把它解析成哪个栈:同一台机器上时好时坏,查起来极费劲(实测栽过一次)。 + * 绑 `127.0.0.1` 之后 `localhost` 与 `127.0.0.1` 都通,且不暴露到局域网 + * (要给别的设备访问再显式 `--host`,那是另一个决定)。 + */ + host: '127.0.0.1', proxy: { - '/api': { target: 'http://localhost:8787', changeOrigin: true }, + '/api': { target: 'http://127.0.0.1:8787', changeOrigin: true }, }, }, });