防止Chrome发送多个服务器发送的请求
Prevent Chrome to send multiple server-sent requests
我有一个接受text/event-stream
的端点,它基本上发送两种不同类型的事件:stats
和result
。当服务器发送result
事件并关闭连接时。
问题是由于sse的设计,浏览器会重新尝试连接。为了防止这种情况,我将重试值设置为更高的数字,如60000,并在获得结果时关闭客户端的连接。
问题是,如果延迟高,Chrome发送多个请求到服务器(它在本地主机上没有问题)。Safari和Firefox的工作没有问题。在Chrome中,在网络选项卡上只有一个请求,所以我不认为Chrome试图连接服务器,因为请求超时。它也不会等待服务器关闭第一个请求,因为要发送第二个请求。在Chrome中什么可能导致这个问题?
注意:服务器发送请求的端点和原点是不同的。对于正常的HTTP请求,Chrome另外发送OPTIONS请求,以找出权限,但对于SSE,它不发送OPTIONS预飞行请求,但我不确定这是一个问题,因为SSE是一个GET请求。
这个问题是由Google Data Saver扩展引起的。我没有检查请求是否来自谷歌的服务器,或者它只是浏览器再次触发相同的请求,但禁用该扩展解决了这个问题。
相关文章:
- 如何检测第三方广告服务器请求
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- 如何在服务器仍在处理以前的请求时对ajax请求进行排队
- 在node.js中从设备向服务器发送一个多部分请求
- Javascript onclick需要点击两次,然后会创建越来越多的服务器请求
- 新的会话cookie直到下一个服务器请求才提供
- 跨来源请求被阻止-如何在没有访问服务器的情况下绕过它
- 在此服务器上找不到请求的-表单验证(位于localhost端口80的Apache/2.4.9(Win32)PHP/5.5
- Android/Chrome jQuery AJAX请求在到达服务器之前失败,并出现parserror
- 将所有angular2捆绑包包含在index.html中会使导入从内存获取数据,而不是再次从服务器请求数据
- web工作程序中不同的服务器请求行为
- Angular2 发布请求未向服务器发送正确的数据
- 节点.js接受 POST 请求的服务器
- 跨节点服务器上的多个 API 请求维护数据
- 对服务器的 GET 请求返回 net::ERR_CONNECTION_REFUSED
- 在Firefox中,当type=submit for按钮时,请求服务器失败
- 请求服务器如何扩展以满足更大的流量需求
- 是否有办法在javascript或php中查看客户端设备的信息,是哪个请求服务器?这个设备是手机、平板电脑还是个人电脑?
- 在HTML/JS请求服务器时处理302状态代码
- 是否有可能模拟一个facebook跟踪像素请求服务器端