【发布时间】:2020-12-23 21:49:14
【问题描述】:
我在 Spring Boot 应用程序中有以下控制器,它接受并返回二进制流。我需要接受一个蒸汽,加密它,同时返回结果。此流可能非常大,无法保存在内存中:
@PostMapping(value = "/encrypt-stream/", consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void encryptStream(HttpServletRequest request, HttpServletResponse response){
OutputStream os = response.getOutputStream();
InputStream is = request.getInputStream();
String checksum = encryptionService.encrypt(is, os);
response.setHeader("checksum", checksum);
}
我需要根据控制器内的服务调用 (encryptionService.encrypt()) 的结果发送标头 (checksum)。
在HttpServletResponse 上设置标题不起作用。
我已经研究过实现Filter 类,但是它仅在您在.doFilter() 调用之前设置标题时才有效。我的问题是标题值是在之后计算的。
此外,实现 HandlerInterceptorAdapter 时也存在同样的问题。
【问题讨论】:
标签: java spring-boot servlets http-headers