防止Chrome发送多个服务器推送请求

3
我有一个接受 text/event-stream 的终端,它基本上发送两种不同类型的事件:statsresult。当服务器发送 result 事件并关闭连接时。
问题在于,浏览器会因为 SSE 的设计而重试连接。为了防止这种情况发生,我将重试值设置为更高的数字,例如60000,并在客户端收到结果后关闭连接。
问题在于,如果延迟很高,Chrome会向服务器发送多个请求(在 localhost 上没有问题)。Safari和Firefox没有问题。在Chrome中,网络选项卡上只有一个请求,因此我认为Chrome并不尝试连接服务器,因为请求超时。它也不等待服务器先关闭第一个请求再发送第二个请求。在Chrome中可能导致这个问题的原因是什么?
注意:服务器推送请求的端点和来源不同。对于正常的HTTP请求,Chrome还会发送OPTIONS请求以查找权限,但对于SSE,它不发送OPTIONS预检请求,但我不确定这是否是一个问题,因为SSE是一个GET请求。

这两个问题有任何关联吗?仅供记录:每个浏览器都应该发送选项预检,而不仅仅是Chrome。 - Tamas Hegedus
@TamasHegedus 不,发送OPTIONS预检请求是正常的,并且也存在于规范中,所以那不是问题。唯一的问题是Chrome发送了两个SSE请求。然而,Chrome不会为SSE发送预检请求,因此我认为问题可能与此有关。 - burak emre
1个回答

0
问题是由Google数据节省扩展引起的。我没有检查请求是否来自Google的服务器,还是只是浏览器再次发出了相同的请求,但禁用该扩展解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接