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

Prevent Chrome to send multiple server-sent requests

本文关键字:请求 服务器 Chrome 防止      更新时间:2023-09-26

我有一个接受text/event-stream的端点,它基本上发送两种不同类型的事件:statsresult。当服务器发送result事件并关闭连接时。

问题是由于sse的设计,浏览器会重新尝试连接。为了防止这种情况,我将重试值设置为更高的数字,如60000,并在获得结果时关闭客户端的连接。

问题是,如果延迟高,Chrome发送多个请求到服务器(它在本地主机上没有问题)。Safari和Firefox的工作没有问题。在Chrome中,在网络选项卡上只有一个请求,所以我不认为Chrome试图连接服务器,因为请求超时。它也不会等待服务器关闭第一个请求,因为要发送第二个请求。在Chrome中什么可能导致这个问题?

注意:服务器发送请求的端点和原点是不同的。对于正常的HTTP请求,Chrome另外发送OPTIONS请求,以找出权限,但对于SSE,它不发送OPTIONS预飞行请求,但我不确定这是一个问题,因为SSE是一个GET请求。

这个问题是由Google Data Saver扩展引起的。我没有检查请求是否来自谷歌的服务器,或者它只是浏览器再次触发相同的请求,但禁用该扩展解决了这个问题。