diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java index 35200db34..8e4fb8e8f 100644 --- a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java +++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java @@ -23,11 +23,11 @@ import java.util.Base64; public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { private static final SecureRandom SECURE_RANDOM = new SecureRandom(); + private static final Charset RESPONSE_CHARSET = StandardCharsets.UTF_8; private final ByteArrayOutputStream byteArrayOutputStream; private final ServletOutputStream servletOutputStream; private PrintWriter printWriter; - private Charset charset; /** * 构造加密响应包装器。 @@ -39,7 +39,6 @@ public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { super(response); this.byteArrayOutputStream = new ByteArrayOutputStream(); this.servletOutputStream = this.getOutputStream(); - this.charset = resolveCharset(response); } /** @@ -50,8 +49,7 @@ public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { @Override public PrintWriter getWriter() { if (printWriter == null) { - charset = resolveCharset((HttpServletResponse) getResponse()); - printWriter = new PrintWriter(new OutputStreamWriter(byteArrayOutputStream, charset)); + printWriter = new PrintWriter(new OutputStreamWriter(byteArrayOutputStream, RESPONSE_CHARSET)); } return printWriter; } @@ -106,7 +104,7 @@ public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { */ public String getContent() throws IOException { flushBuffer(); - return byteArrayOutputStream.toString(charset); + return byteArrayOutputStream.toString(RESPONSE_CHARSET); } /** @@ -130,14 +128,14 @@ public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { // vue版本需要设置 servletResponse.addHeader("Access-Control-Expose-Headers", headerFlag); servletResponse.setHeader(headerFlag, encryptPassword); - servletResponse.setCharacterEncoding(charset.name()); + servletResponse.setCharacterEncoding(RESPONSE_CHARSET.name()); // 获取原始内容 String originalBody = this.getContent(); // 对内容进行加密 String encryptContent = EncryptUtils.encryptByAes(originalBody, aesPassword); - servletResponse.setContentLengthLong(encryptContent.getBytes(charset).length); + servletResponse.setContentLengthLong(encryptContent.getBytes(RESPONSE_CHARSET).length); return encryptContent; } @@ -206,20 +204,6 @@ public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { }; } - /** - * 解析响应字符集,未设置时默认使用 UTF-8。 - * - * @param response 原始响应 - * @return 响应字符集 - */ - private Charset resolveCharset(HttpServletResponse response) { - String characterEncoding = response.getCharacterEncoding(); - if (characterEncoding == null) { - return StandardCharsets.UTF_8; - } - return Charset.forName(characterEncoding); - } - /** * 生成响应内容 AES 加密密钥。 *