小编Rya*_*yan的帖子

为什么 sendError 返回空响应正文

我正在尝试使用 HttpServletResponse 中的 sendError 方法,但总是返回一个空的正文响应。

@Override
protected void doFilterInternal(@NonNull HttpServletRequest httpServletRequest, 
                                @NonNull HttpServletResponse httpServletResponse,
                                @NonNull FilterChain filterChain)
                                    throws ServletException, IOException {

        String token = jwtTokenProvider.resolveToken(httpServletRequest);
        try {
            if (token != null && jwtTokenProvider.validateToken(token)) {
                Authentication auth = jwtTokenProvider.getAuthentication(token);
                SecurityContextHolder.getContext().setAuthentication(auth);
            }
        } catch (CustomException ex) {
            SecurityContextHolder.clearContext();
            httpServletResponse.sendError(ex.getHttpStatus().value(), ex.getMessage());
            return;
        }
        filterChain.doFilter(httpServletRequest, httpServletResponse);
}
Run Code Online (Sandbox Code Playgroud)

由于它不起作用,我尝试构建自己的响应并将其返回给客户端(这是一个 API 调用)。

String error = "Expired or invalid JWT token";
ApiError errorResponse = new ApiError(new Date(),500, HttpStatus.INTERNAL_SERVER_ERROR, error, ex.getLocalizedMessage(), httpServletRequest.getRequestURL().toString());
httpServletResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
httpServletResponse.getWriter().write(convertObjectToJson(errorResponse));
Run Code Online (Sandbox Code Playgroud)
private String convertObjectToJson(Object object) …
Run Code Online (Sandbox Code Playgroud)

java servlets spring-boot

7
推荐指数
1
解决办法
1344
查看次数

标签 统计

java ×1

servlets ×1

spring-boot ×1