【问题标题】:How to abort HTTP transaction如何中止 HTTP 事务
【发布时间】:2013-05-01 23:02:01
【问题描述】:

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

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

代理的设计注意事项

  1. 本应发送 200 字节的 100 字节后,Proxy 是否可以关闭与浏览器的 Http 事务?

  2. 如果你建议Proxy和Browser之间的Http事务应该中止,你是如何实现的?

【问题讨论】:

  • 我已经更新了问题的描述。问题更多是关于代理应该做什么?

标签: java http networking


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    很可能整个 200 字节将在标头之后写入套接字发送缓冲区,并且发送方将关闭套接字而不会注意到任何问题。在最坏的情况下,发送者会收到一个 IOException: 'connection reset',servlet 容器会捕获并忽略它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2014-10-10
      • 2016-01-20
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2019-12-22
      相关资源
      最近更新 更多