如何中止HTTP事务

时间:2013-05-01 11:26:05

标签: java http networking

Browser ----> Http Proxy ----> Web server

假设对于请求,Web服务器已指示它将使用Content-Length头发送200个字节作为响应主体。 100字节后网络中断,最终从代理服务器到Web服务器的套接字读取超时。

代理的设计注意事项

  1. 代理是否可以在100字节之后用浏览器关闭Http事务,它应该发送200字节?

  2. 如果您建议中止代理和浏览器之间的Http事务,您是如何实现的?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Servlet容器,我认为容器会在内部使用Exception处理它,或者,如果您从HttpServletResponse / HttpServletRequest中获取了OutputStream / InputStream,您将从流中获取IOException写入/读取

如果您尝试使用普通Java套接字自行处理此问题,那么您将在流上获得IOException,因为您无法向其写入任何字节。

答案 1 :(得分:0)

最有可能的是,在标题和发送方将关闭套接字之后,整个200字节将被写入套接字发送缓冲区,而根本不会发现任何错误。在最坏的情况下,发送方将获得IOException:'connection reset',servlet容器将捕获并忽略它。