前后端的大佬们帮忙看看,最近遇到个奇葩问题

242 天前
 imherer

有几个数据量比较大( 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,
        },
      }
10306 次点击
所在节点    程序员
102 条回复
musi
242 天前
看看原始 go api 返回的 response header 和 vite api 返回的 response header
imherer
242 天前
@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
8888888888
242 天前
如果是 mac 的话,兴许是要在本地网络里面勾选上 chrome
0900301432
242 天前
重启服务器
0900301432
242 天前
我前几天也碰到这个问题,客户端弄了一遍没有好。 同事把服务重启了就好了
chobitssp
242 天前
imherer
242 天前
@0900301432 #5 后端服务和前端现在都在我本机电脑上,尝试过重启还是不行
imherer
242 天前
@chobitssp 看着好像不是同一个问题。 而且我这个问题很奇葩,线上环境数据量比我本地的还大,已经的大于 57kb 了,访问也没这个问题
Kokomashiro
242 天前
看看有问题的电脑 c 盘空间是不是不够了,具体啥原因忘了
chobitssp
242 天前
@imherer 2 楼说了 The page would load normally if accessed in HTTPS mode
如果线上是 https 就不会复现
imherer
242 天前
@chobitssp #10 线上确实是 https
如果在本地我把前端打包后直接放在和后端服务里(相当于前后端都是同一个 host )的情况下用 chrome 访问也没问题
imherer
242 天前
@Kokomashiro 够的呢,c 盘还有 500g+
Aolose
242 天前
node 版本是多少
这里有个和版本相关的原因
https://github.com/nodejs/node/issues/13677

另外 vite 的 proxy 用的一个古老的 http-proxy 包,它也有嫌疑
https://github.com/http-party/node-http-proxy/issues/921
javalaw2010
242 天前
chunked 响应?可能是响应里没有正确的结束符,结尾需要额外传输 0\r\n\r\n 表示结束
magewu1223ll
242 天前
这个错误是数据在传输过程中服务器突然中断了,是不是在调试时,你的服务有什么热更新然后重启了?
imherer
242 天前
@Aolose node 版本是 v20.11.0

关键是只有我电脑上的 chrome 有这个问题,我用别的浏览器或者别的电脑访问都没问题。
imherer
242 天前
@magewu1223ll 没有,就正常访问偶现,而且概率还挺高
abc1310054026
242 天前
你可以尝试模拟下返回的数据,尝试返回不同大小的数据,看看是否报错。怀疑 chrome 对非安全数据大小有限制?
imherer
242 天前
@abc1310054026 目前有 3 个接口返回的数据量比较大,我尝试过把这 3 个接口都返回空就不会报错。 但是这 3 个接口也不是 100%报错,而且有一定概率会报错
Timefly
242 天前
是不是搞了负载均衡之类的东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1112519

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX