大约在2017年,abort a fetch已经可以在前端javascript中立即运行。但是我很难找到任何关于这对HTTP连接有什么影响的信息。它会过早关闭连接吗,还是浏览器会保持请求打开,并在响应到达时丢弃它?
我有一个用例,一个用户从一个webapp前端调用一个(潜在的)昂贵的数据库。有时候,他们会注意到一个请求花费了太长的时间,然后手动取消它。我希望能够接受这个信号,取消我昂贵的数据库查询,因为他们不再对结果感兴趣。
我的REST服务器有没有办法知道提取已经中止了?(我的服务器是Java Jersey/Grizzly。
1条答案
按热度按时间nhaq1z211#
它通常被认为:
https://fetch.spec.whatwg.org/#http-network-fetch 17.2.3/4
1.如果中止,则:
1.如果fetchParams中止,则:
1.设置响应的中止标志。
1.如果流是可读的,则错误流具有在给定fetchParams的控制器的序列化中止原因和实现定义的领域的情况下反序列化序列化中止原因的结果。
1.否则,如果流可读,则使用TypeError错误流。
1.如果连接使用HTTP/2,则传输RST_STREAM帧。
1.否则,用户代理应该关闭连接,除非这样做会降低性能。
例如,如果用户代理知道在一个可重用的连接上只剩下几个字节的传输,它可以保持连接打开,在这种情况下,关闭连接并为下一次获取再次执行握手过程可能会更糟。
但是,Firefox目前没有(https://bugzilla.mozilla.org/show_bug.cgi?id=1568422)。