Content-Length错误导致的Servlet下载文件失败问题

问题描述

需要对下载文件接口增加一个加密控制功能,在Servlet里面对原文家加密,然后返回给客户端,在测试时发现下载的文件无法正常打开,大小等于原文件的大小。

问题原因及处理

经过排除,发现在接口里面设置的Content-Length是原文件的长度,并不是加密结果的长度。客户端在执行HTTP请求是,读取Content-Length的长度,然后保存对应大小的数据,剩余的数据并没有被保存,知道问题原因就很好处理了,将Content-Length头设置为正确的大小即可。

什么是Content-Length

Content-Length是HTTP响应头字段,它指明了HTTP请求体或者响应体的大小,他是一个表示字节大小的十进制数,服务端/客户端通过它来得知后续要读取消息的长度。

参考

https://blog.piaoruiqing.com/2019/09/08/do-you-know-content-length/
https://tools.ietf.org/html/rfc2616#page-119

原文地址:https://www.cnblogs.com/ZiYangZhou/p/12934078.html