avwo / whistle

HTTP, HTTP2, HTTPS, Websocket debugging proxy
https://wproxy.org/
MIT License
14.27k stars 1.08k forks source link

使用代理大量请求时Chrome浏览器请求会报错:net::ERR_HTTP2_PROTOCOL_ERROR #1081

Open futurist opened 4 months ago

futurist commented 4 months ago

使用 Github Codespaces 开发 https://github.com/microsoft/vscode 时,经常碰到如下错误:

这个仓库会请求3000左右个JS文件。

不确定是否跟 header limit 有关? https://stackoverflow.com/questions/60974237/chrome-neterr-http2-protocol-error-200-after-a-reconnect

Whistle配置如下:

myhost.com/oss-dev/static https://zany-winner-96wp4v45jfx7j-9888.app.github.dev//oss-dev/static

image

avwo commented 4 months ago

试试:

myhost.com/oss-dev/static https://zany-winner-96wp4v45jfx7j-9888.app.github.dev//oss-dev/static disable://h2

会不会是被限频了

yiludege commented 3 months ago

我这边的问题是直接连接原服务器,1000+的请求没有问题,经过代理之后就出现大量net::ERR_HTTP2_PROTOCOL_ERROR,这些请求都是返回304协商缓存,如果把缓存禁止掉:disable://cache,那么请求全部是200就不会出现这个错误

感觉是代理这边处理大量请求的304的时候处理不过来?

avwo commented 3 months ago

200 都可以处理得来,没道理 304 不可以,我这边怎么重现,本地自己起服务器也有这个问题吗?

yiludege commented 3 months ago

是的我也觉得奇怪,我这里是前端开发,就是本地的服务

我这边用的是vite起的node服务,https://github.com/vitejs/vite/issues/4403 这个issue也说了这个问题说增加maxSessionMemory来应对,但是我直连node服务没有问题,whistle会不会在代理的过程中进行批处理从而导致服务器吞吐量变大从而无法响应过来呢

avwo commented 3 months ago

whistle 上显示的请求正常吗,能不能打包个可重现的服务发我看下

yiludege commented 3 months ago

报错的请求在whistle的network中搜索不到

avwo commented 3 months ago

network 收不到说明请求还没到 whistle,在中间某个环节或 node 底层就出问题

unangela commented 3 months ago

遇到同样的问题,network 没有收到 fail 的请求,但连了 whistle 就会出现这个情况 企业微信截图_01f14a91-97d7-4c4c-97b7-d25472c5d51f