Debugging a mysterious HTTP streaming issue
9 months ago
- #Debugging
- #Cloudflare
- #HTTP Streaming
- 在使用AI SDK和Node流API时遇到HTTP响应流问题
- cURL和Postman能正常流式传输,但node-fetch和浏览器fetch失败
- 最初假设是web流与Node流的HTTP/2兼容性问题
- 发现通过Cloudflare worker作为中间件的临时解决方案
- 排除了HTTP版本差异是根本原因的可能性
- 怀疑是头信息剥离问题('Transfer-Encoding', 'Connection', 'Content-Encoding')
- 学习了动态响应和HTTP流式传输机制
- 突破点在于注意到cURL默认不带'Accept-Encoding'请求头
- 确定压缩是根本原因并在Cloudflare中禁用了它
- 意识到这是之前在Trieve遇到过的重复性问题
- 突显了Cloudflare静默修改配置的不可预测行为
- 经验教训:压缩会破坏流式传输、cURL与fetch的差异、Cloudflare worker作为调试工具、源码可用性的重要性、团队知识共享