在虚构的网络应用程序中......
请求会怎样? 服务器是否继续准备响应? 响应是否到达浏览器?
答案 0 :(得分:5)
服务器将继续准备响应。当它尝试将响应发送到客户端时,它将失败。当这实际发生时,可能取决于实际的应用程序服务器实现,响应是否被缓冲等。
在Java EE应用服务器(Tomcat和WebLogic,可能还有其他服务器)中,您将获得以下异常:
java.net.SocketException: Connection reset by peer: socket write error
答案 1 :(得分:1)
PHP了解三种连接状态:NORMAL,ABORTED和TIMEOUT。您可以使用ignore_user_abort()函数更改有关ABORTED连接的PHP策略(默认情况下,脚本已终止)。从备注部分:
“在尝试向客户端发送信息之前,PHP不会检测到用户已中止连接。”
请注意,如果缓冲了服务器的输出,则可能不会立即发送。
有关详细信息,请参阅PHP's page on connection handling。
答案 2 :(得分:1)
如果在请求完全发送到服务器之前连接已断开,则不会进行响应处理。
如果请求已完全发送,则会触发服务器端处理,尽管连接断开,响应生成仍将继续。
在ASP.NET中,如果客户端不再连接,可以使用Response.IsClientConnected来暂停处理,从而节省CPU时间并立即将线程返回到线程池。
答案 3 :(得分:0)
我认为实际的TCP连接被浏览器关闭,因此Web服务器将无法发送数据,除非专门编程为在准备数据时检测断开的连接,否则页面将完全即使用户取消也会处理。
我对这些事情知之甚少,但那是我的猜测。