首页 > 解决方案 > 中止流 servlet 响应

问题描述

我正在从 servlet(实际上是 Spring Boot 控制器,但没关系)向客户端流式传输未知大小的响应。

我通过调用强制提前发送标头,flush()以便客户端(浏览器)可以正确显示下载已开始。

如果流中间发生错误怎么办?现在客户端只是获取文件的一部分并且不知道它是坏的。

根据在流式传输 Http 请求的主体时如何处理错误,我应该在 Socket 上使用 TCP RST 或写入一些不是有效的分块编码数据的垃圾。

不幸的是,我没有找到访问底层套接字的方法,也无法编写格式错误的响应——ServletResponse#getOutputStream在内部进行分块,我也找不到绕过它的方法。

标签: javahttptomcatservlets

解决方案


推荐阅读