有几个数据量比较大( 57kb 左右)的 api 在 chrome 浏览器下偶尔会报错如下:
GET http://localhost:3000/api/v1/xxx net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
这里的 3000 是 vite 的端口,对应的后端端口是 4000 。
怀疑是不是 chrome 哪里设置不对,但是最近也没改动过设置,我还把 chrome 上所有的扩展都禁用了
之前没有任何问题,最近也没改动过代码,也没升级过依赖库,发现问题是因为我更新了 GoLand ,然后重启了电脑就出现这个问题了。
最开始以为是 GoLand 版本导致的,我尝试过不用 GoLand 启动后端程序、GoLand 降级为之前版本,问题依旧
前后端分离的方式,后端是用 Go+Gin,前端是 Vue3+Vite5.2.6 ,本地开发的时候 vite.config.ts 里的 server 配置如下
proxy: {
"/api/v1": {
target: "http://localhost:4000",
ws: true,
changeOrigin: true,
},
}
![]() |
1
musi 2 天前
看看原始 go api 返回的 response header 和 vite api 返回的 response header
|
![]() |
2
imherer OP @musi 原始 api 的:
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Wed, 19 Feb 2025 02:00:08 GMT Transfer-Encoding: chunked vite 正常返回: HTTP/1.1 200 OK Access-Control-Allow-Origin: * content-type: application/json; charset=utf-8 date: Wed, 19 Feb 2025 02:01:05 GMT connection: close transfer-encoding: chunked vite 报错返回: HTTP/1.1 200 OK Access-Control-Allow-Origin: * content-type: application/json; charset=utf-8 date: Wed, 19 Feb 2025 02:01:42 GMT connection: close transfer-encoding: chunked |
3
timedivision 2 天前
如果是 mac 的话,兴许是要在本地网络里面勾选上 chrome
|
4
0900301432 2 天前
重启服务器
|
5
0900301432 2 天前
我前几天也碰到这个问题,客户端弄了一遍没有好。 同事把服务重启了就好了
|
![]() |
7
imherer OP @0900301432 #5 后端服务和前端现在都在我本机电脑上,尝试过重启还是不行
|
9
Kokomashiro 2 天前
看看有问题的电脑 c 盘空间是不是不够了,具体啥原因忘了
|
10
chobitssp 2 天前
@imherer 2 楼说了 The page would load normally if accessed in HTTPS mode
如果线上是 https 就不会复现 |
![]() |
11
imherer OP @chobitssp #10 线上确实是 https
如果在本地我把前端打包后直接放在和后端服务里(相当于前后端都是同一个 host )的情况下用 chrome 访问也没问题 |
![]() |
12
imherer OP @Kokomashiro 够的呢,c 盘还有 500g+
|
![]() |
13
Aolose 2 天前
node 版本是多少
这里有个和版本相关的原因 https://github.com/nodejs/node/issues/13677 另外 vite 的 proxy 用的一个古老的 http-proxy 包,它也有嫌疑 https://github.com/http-party/node-http-proxy/issues/921 |
![]() |
14
javalaw2010 2 天前
chunked 响应?可能是响应里没有正确的结束符,结尾需要额外传输 0\r\n\r\n 表示结束
|
![]() |
15
magewu1223ll 2 天前
这个错误是数据在传输过程中服务器突然中断了,是不是在调试时,你的服务有什么热更新然后重启了?
|
![]() |
17
imherer OP @magewu1223ll 没有,就正常访问偶现,而且概率还挺高
|
18
abc1310054026 2 天前
你可以尝试模拟下返回的数据,尝试返回不同大小的数据,看看是否报错。怀疑 chrome 对非安全数据大小有限制?
|
![]() |
19
imherer OP @abc1310054026 目前有 3 个接口返回的数据量比较大,我尝试过把这 3 个接口都返回空就不会报错。 但是这 3 个接口也不是 100%报错,而且有一定概率会报错
|
![]() |
20
Timefly 2 天前
是不是搞了负载均衡之类的东西
|
22
abc1310054026 2 天前
建议换一台 PC 或者换个 chroome 版本试试,Chrome 其实没你想象的那么可靠,在一些边缘场景会有问题反反复复出现。
可以用 browserstack 测试不同版本的浏览器。 |
![]() |
23
imherer OP @abc1310054026 #22 感谢,我看看 browserstack
|
![]() |
24
rekulas 2 天前
遇到玄学问题可以尝试下玄式方案,比如换个端口?
|
26
UnluckyNinja 2 天前 via Android
vite 5.2.6 有点老了,v5 现在最新是 5.4.14 ,试试更新下看看
|
![]() |
27
imherer OP @UnluckyNinja 应该和这个关系不大,我有更到 6.0.9 还是同样的问题
|
![]() |
28
whoosy 2 天前
把 vpn 关掉
|
30
xmdbb 2 天前
關鍵字是 ERR_INCOMPLETE_CHUNKED_ENCODING
|
31
UnluckyNinja 2 天前 via Android
@imherer #27 那感觉可以试试抓包比较一下到底有何区别?最好是前端到 vite ,vite 到后端都抓一下,对比正常的看看到底是 incomplete 在哪里😂
|
![]() |
32
Ly0n 2 天前
这有一个 nginx 报相同错误 ERR_INCOMPLETE_CHUNKED_ENCODING 的解决方案
https://juejin.cn/post/7096409076245987358 看起来像是缓冲区的问题 或者会不会是特定数据的问题 |
![]() |
33
imherer OP @UnluckyNinja #31 嗯嗯
|
34
Oldletter 2 天前
你电脑有没有 web 防护的杀毒软件呢?
|
36
alangc 2 天前
试试下面三个方法呢:
1. 关闭浏览器所有 3000 标签,只保留一个,测试下 2. vite 启动命令加上 --force ,重启 3. 删除 node_modules, 重新安装依赖,重启 |
37
hackroad 2 天前
https://netlog-viewer.appspot.com/#events chrome 抓包看看
|
40
mizuki9 2 天前
chrome 设置里关掉 “预加载网页” ?
|
41
kbqncf 2 天前
既然是有概率出现,那么是不是服务端接口返回的数据有某种变化?
能正常请求的时候,记录下接口返回的数据,然后服务端接口强制写死返回相同的数据,再多次测试接口看看是否正常。 难道是接口数据里面有 emoji 或特殊字符? |
![]() |
42
imherer OP @kbqncf 没有 emoji 或特殊字符,就是纯字符串。现在只有在 chrome 下访问通过 vite 代理的端口 api 才会有问题,其他的浏览器或者直接访问后端的 api 就没问题。
用 wireshark 抓包看了下当 chrome 出现错误的时候,抓包里的数据还是正常返回的 |
43
cnbdas 2 天前
https://github.com/chimurai/http-proxy-middleware/discussions/574
可以看看这个移除 transfer-encoding 然后访问试试 |
44
richardZhao 2 天前
期待后续。
|
45
UnluckyNinja 2 天前 via Android
楼主要不做一个 minimal reproduction 吧,服务器信息脱下敏、换成固定的假数据、前端最低限度内容,能复现报错就行,让大家在本地跑一跑,没准就有人 debug 出来了
|
![]() |
46
4Et5ShxMIq58n6Lr 2 天前
我今天本地开发的时候也遇到了,接口走代理的时候,也会出现这种情况,不过不是必现,时好时坏,不知道为啥,刷新一下页面又会正常
|
47
huiguo19962023 2 天前
真是巧了,我今天遇到类似的问题,代码没有任何改变。只是昨天晚上电脑强制断电了,今天重启服务重新打开谷歌浏览器就变成这样了,目前未定位问题。但是用火狐或者 edge 没有问题。所以排除代码的问题。
|
![]() |
48
imherer OP @huiguo19962023 简直一模一样啊。我也是因为昨天更新了 GoLand 然后重启了电脑出现的
|
![]() |
49
imherer OP @UnluckyNinja #45 晚点我弄一个能复现的 minimal reproduction 试试
|
![]() |
50
wangtian2020 2 天前
把 F12 里的禁用缓存打开
|
![]() |
51
imherer OP @wangtian2020 开着的,而且尝试过清除浏览器缓存、无痕模式 都不行
|
![]() |
52
wangtian2020 2 天前
ws: true 是个什么
后端真的是一个个懒狗,跨域不开,非要前端搞 proxy changeOrigin 我看啊,是这个 websocket 分包了 |
53
Zz09 2 天前
会不会返回的数据出现某个 chrome 不能识别的字符导致的
|
![]() |
54
SleepyRaven 2 天前
https://stackoverflow.com/questions/29894154/chrome-neterr-incomplete-chunked-encoding-error
杀毒软件的类似实时防护功能导致的,不限于 ESET 和卡巴斯基 |
![]() |
55
wangtian2020 2 天前 ![]() 不用找原因了。
原因就是因为你司后端是一个懒狗,不愿意在开发环境搞跨域请求头 `Access-Control-Allow-Origin: *` 所以你们前端就上了 vite 的 proxy 功能,把请求接口代理转发一下, 避免这种因为接口地址跨域并且接口返回头并不是跨域。 ws: true 说明用到了 websocket 小请求没事,结果有一个请求太大了,57KB ,触发了 websocket 的分包 (注:分包粘包不是一个问题,而是一个现象)。触发了 bug ,一分包,夹断了 |
![]() |
56
imherer OP |
![]() |
57
wangtian2020 2 天前
建议趁着下班前,火速去跟后端 battle 去
|
![]() |
58
leokun 2 天前
@wangtian2020 #57 他这个和 ws 没关系,作者发的响应头中有 Transfer-Encoding: chunked ,说明是分块传输。
这个 HTTP 协议应该是作者的服务程序自带的,通过代理后,只有 chrome 在解码块的时候报错了 |
![]() |
60
wangtian2020 2 天前
@leokun 都解释的通的,websocket 分包这个机制,就是看网络层心情,大数据传输有时候分包有时候不分,这不就跟 OP 的有时没问题有时有问题,对上了吗。而且大数据量也对上了。他把 websocket 去掉。肯定就好了
|
![]() |
61
tcper 2 天前
@wangtian2020 看作者的例子是 get 请求,不是 websocket
|
![]() |
62
myderr 2 天前
没成功复现
|
63
dishangyijiao 2 天前
@imherer 拉下来,在本地没有复现。
|
![]() |
65
imherer OP @dishangyijiao 感谢!
|
66
dishangyijiao 2 天前
@imherer 我是 Mac mini M4 ,Chrome Version 133.0.6943.98 (Official Build) (arm64)。
|
![]() |
67
imherer OP @dishangyijiao #66 嗯,我昨天在 Mac 上也试了,未能复现 Chrome Version 133.0.6943.99
|
68
leochenL 2 天前
我们内网的平台也出现了,也是只有在那个人电脑的 Chrome 上才会出现,没找出啥问题,让用 edge 了
|
![]() |
70
gsx250 2 天前
只在 chrome 下偶现?试试看是不是 chrome 的插件导致的。卸载完所有的插件,再重启 chrome 试试。
再或者重新安装 chrome ,不要安装插件。 |
74
hailaz 2 天前
Windows chrome133.0.6943.127 (正式版本) ( 64 位)没有复现
|
![]() |
75
asdjgfr 2 天前
数据改为 5000000 的时候复现了,设置跨域不走 vite 的代理也这样,edge 和火狐没问题,估计是 chrome 的特殊 bug 吧
版本 133.0.6943.98 (正式版本) ( 64 位) |
76
Sum0l 2 天前
未能复现
windwos chrome 版本 133.0.6943.126 (正式版本) ( 64 位) vscode 运行前后端 |
77
frank553000 2 天前
我的也是,换端口,重启 php ,重新安装包都试了,暂时用 edge 了:
版本 133.0.6943.127 (正式版本) ( 64 位) GET http://localhost:3000/wp-content/themes/xxx/assets/dist/css/app.css?ver=2de18c97299dd576c55d9a3468426371 net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) GET http://localhost:3000/wp-content/themes/xxx/assets/dist/img/logo.png net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK) GET http://localhost:3000/ net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK) |
![]() |
78
ZLY201 2 天前 ![]() chromium 内核已知问题,本地走代理访问大页面会出现这个问题 -> https://issues.chromium.org/issues/391126826
|
![]() |
79
Aolose 2 天前
没有复现 设置到了 500000 条 除了会卡顿一下 ... 这是玄学吗
Node v23.6.1 Go go1.24.0 windows/amd64 Chrome 133.0.6943.98 (Official Build) (64-bit) |
80
fuzzsh 2 天前 via Android
反复刷新才出现?看似是复用了连接,改成用完即弃?
|
82
Danswerme 1 天前
我逐步加到 50,000,000 条,浏览器耗时八秒传输了 739 MB 数据,页面没能加载出数据条数,但是也没有复现这个问题。
Node v22.13.1 go version go1.23.6 windows/amd64 Chrome 133.0.6943.127 (Official Build) (64-bit) |
83
DLOG 1 天前
看不出来,直接 wireshark 抓包看吧
|
85
morytyann 1 天前
根据 Chromium 的 Issue ,添加--disable-features=TcpSocketIoCompletionPortWin 到快捷方式的目标里即可。
Issue 链接: https://issues.chromium.org/issues/391126826 解决方法: https://issues.chromium.org/issues/391126826#comment15 |
87
zhaojun1998 1 天前
也遇到了这个问题。。一开始以为浏览器某个插件导致的,然后换了 Edge 正常。看来真是谷歌浏览器的问题了。
|
![]() |
88
diyhi 1 天前
chrome 的问题,Edge 和 Firefox 都正常,chrome 用 http 访问就会报错 net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK),https 正常
|
89
lyj9768 22 小时 24 分钟前
我也遇到了,昨晚手贱更新了 chrome 到 133 ,今天内网的页面时不时就加载不出来,换火狐正常。我记得之前好像说 chrome 会禁止没有 https 的访问,但是难道连本地的也禁止?
|
![]() |
90
july1995 12 小时 23 分钟前 via iPhone
蹲一个后续,问题解决了 通知一下哈。😋
|