如图: 是收到了响应数据的,有5.8 KB,但是 EventStream 却什么都没有。
一开始确实毫无头绪,但 @phodal 给出了思路,觉得是一些 http 的奇技淫巧,后来我顺着这个思路找下去发现不可能是 http 层面的问题,因为 spec 说明如果不是 event、data、id 或 retry 就会被浏览器丢掉,js 没有机会做骚操作,我又翻了下 webkit 的源码 佐证了这一事实:浏览器并没有特殊实现,完全按照 spec 来的
最后经过研究发现其实服务端并没有进行什么骚操作,只是浏览器端使用了server-sent-event(sse), 但是没有用标准的 EventSource,而是自己fetch,只不过 request header
加上了 'Accept': 'text/event-stream'. 具体操作可以看本仓库示例