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

标签 javascript html google-chrome server-sent-events eventsource

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

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

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

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

最佳答案

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

关于javascript - 阻止 Chrome 发送多个服务器发送的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39252148/

相关文章:

javascript - 有没有办法从函数内定义的变量获取信息?

jquery - 如何使按钮位于所有设备的右下角?

linux - Linux 的 CRD 主机 - "OAuth credentials are invalid"

css - 行高问题

javascript - 如何在浏览器中编辑 javascript

javascript - 滑动响应导航 - 加载和响应页面时闪烁

javascript - jQuery从JSON解析时找不到元素

javascript - 如何使一列始终突出显示

jquery - Wordpress 自定义弹出窗口

javascript - 未捕获的类型错误 : Cannot read property 'scrollTop' of undefined