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

时间:2016-08-31 14:18:43

标签: javascript html5 google-chrome server-sent-events eventsource

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

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

问题是,如果延迟很高,Chrome会向服务器发送多个请求(它在localhost上没有问题)。 Safari和Firefox的工作没有问题。在Chrome中,网络标签上只有一个请求,所以我不认为Chrome会因为请求超时而尝试连接服务器。它也不会等待服务器关闭第一个请求,因为发送第二个请求。什么可能会导致Chrome中出现此问题?

注意:服务器发送请求的端点和来源不同。对于正常的HTTP请求,Chrome还会发送OPTIONS请求以查找权限,但对于SSE,它不会发送OPTIONS预检请求,但我不确定这是一个问题,因为SSE是GET请求。

1 个答案:

答案 0 :(得分:0)

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