Web 开发服务器改双栈全绑 —— 单栈回环怎么绑都有一族是死的

这坑栽了两次:不给 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) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
This commit is contained in:
2026-07-28 14:55:23 +08:00
co-authored by Claude Opus 5
parent ff114a2246
commit 8fe9ef8ecb
+10 -7
View File
@@ -21,15 +21,18 @@ export default defineConfig({
server: { server: {
port: 5173, port: 5173,
/* /*
* 显式绑 IPv4 回环。 * 双栈全绑(host: true = `::` 双栈 any)。
* *
* 不给 host 时 vite 走 Node 的默认解析,在本机上只绑到 `[::1]` —— 于是 * 这坑栽过**两次**:不给 host 时只绑 `[::1]`,`127.0.0.1` 连不上;
* `http://127.0.0.1:5273` 直接连不上,而 `localhost` 通不通取决于浏览器/系统 * 改绑 `127.0.0.1` 后 `[::1]` 又连不上 —— 单栈回环怎么绑都有一族是死的,
* 把它解析成哪个栈:同一台机器上时好时坏,查起来极费劲(实测栽过一次)。 * 浏览器把 localhost 解析到哪族全看系统心情,表现就是「时好时坏」。
* 绑 `127.0.0.1` 之后 `localhost` 与 `127.0.0.1` 都通,且不暴露到局域网 * 回环双栈没有单 socket 的绑法,只能 any。
* (要给别的设备访问再显式 `--host`,那是另一个决定)。 *
* 代价说明白:这会暴露到局域网 —— 但 API 从来就是 `*:8787`(Node 默认双栈 any),
* Web 跟它对齐并没有扩大暴露面;有登录门,且这是开发机。
* 要收回环,把这里改回 '127.0.0.1',并接受 [::1] 那族不通。
*/ */
host: '127.0.0.1', host: true,
proxy: { proxy: {
'/api': { target: 'http://127.0.0.1:8787', changeOrigin: true }, '/api': { target: 'http://127.0.0.1:8787', changeOrigin: true },
}, },