Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导:基于结果发送响应头_Java_Spring Boot_Servlets_Http Headers - Fatal编程技术网

Java Spring引导:基于结果发送响应头

Java Spring引导:基于结果发送响应头,java,spring-boot,servlets,http-headers,Java,Spring Boot,Servlets,Http Headers,我在Spring引导应用程序中有以下控制器,它接受并返回二进制流。我需要接受一个蒸汽,加密它,同时返回结果。这些流可能非常大,无法保存在内存中: @PostMapping(value = "/encrypt-stream/", consumes = MediaType.APPLICATION_OCTET_STREAM_VALUE, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public void

我在Spring引导应用程序中有以下控制器,它接受并返回二进制流。我需要接受一个蒸汽,加密它,同时返回结果。这些流可能非常大,无法保存在内存中:

    @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()
)发送a头(
校验和(
)。
在
HttpServletResponse
上设置标头不起作用

我已经研究了如何实现
Filter
类,但是它只在
.doFilter()
调用之前设置头时起作用。我的问题是页眉值是在之后计算的


另外,实现
HandlerInterceptorAdapter

也存在同样的问题,我认为HTTP对于流式加密服务器来说可能是一个糟糕的选择。该协议的核心是“先请求后响应”,并不是为您可能在请求完成之前开始返回响应的用例而设计的。早期返回的错误代码也有例外,但对这种行为的支持似乎参差不齐