From 8fe9ef8ecbc7cb44aa577f125cec04e7767548e7 Mon Sep 17 00:00:00 2001 From: 18628386721 <18628386721@163.com> Date: Tue, 28 Jul 2026 14:55:23 +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=94=B9=E5=8F=8C=E6=A0=88=E5=85=A8=E7=BB=91=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20=E5=8D=95=E6=A0=88=E5=9B=9E=E7=8E=AF?= =?UTF-8?q?=E6=80=8E=E4=B9=88=E7=BB=91=E9=83=BD=E6=9C=89=E4=B8=80=E6=97=8F?= =?UTF-8?q?=E6=98=AF=E6=AD=BB=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这坑栽了两次:不给 host 只绑 [::1],127.0.0.1 连不上;上次改绑 127.0.0.1, [::1] 又连不上。浏览器把 localhost 解析到哪族全看系统心情,表现就是「时好时坏」。 回环双栈没有单 socket 的绑法,只能 any(host: true)。 代价写在配置里:会暴露到局域网 —— 但 API 从来就是 `*:8787`(Node 默认双栈 any), Web 跟它对齐没有扩大暴露面;有登录门,且这是开发机。要收回环改回 '127.0.0.1' 即可。 实测:127.0.0.1 / [::1] / localhost 三种写法全 200,/api 代理 200。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m --- apps/web/vite.config.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index cf4aff3..32c4f3f 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -21,15 +21,18 @@ export default defineConfig({ server: { port: 5173, /* - * 显式绑 IPv4 回环。 + * 双栈全绑(host: true = `::` 双栈 any)。 * - * 不给 host 时 vite 走 Node 的默认解析,在本机上只绑到 `[::1]` —— 于是 - * `http://127.0.0.1:5273` 直接连不上,而 `localhost` 通不通取决于浏览器/系统 - * 把它解析成哪个栈:同一台机器上时好时坏,查起来极费劲(实测栽过一次)。 - * 绑 `127.0.0.1` 之后 `localhost` 与 `127.0.0.1` 都通,且不暴露到局域网 - * (要给别的设备访问再显式 `--host`,那是另一个决定)。 + * 这坑栽过**两次**:不给 host 时只绑 `[::1]`,`127.0.0.1` 连不上; + * 改绑 `127.0.0.1` 后 `[::1]` 又连不上 —— 单栈回环怎么绑都有一族是死的, + * 浏览器把 localhost 解析到哪族全看系统心情,表现就是「时好时坏」。 + * 回环双栈没有单 socket 的绑法,只能 any。 + * + * 代价说明白:这会暴露到局域网 —— 但 API 从来就是 `*:8787`(Node 默认双栈 any), + * Web 跟它对齐并没有扩大暴露面;有登录门,且这是开发机。 + * 要收回环,把这里改回 '127.0.0.1',并接受 [::1] 那族不通。 */ - host: '127.0.0.1', + host: true, proxy: { '/api': { target: 'http://127.0.0.1:8787', changeOrigin: true }, },