我正在使用Spring boot嵌入式tomcat发布休息服务。
spring启动版本使用最新的“ 1.3.6.RELEASE”
我要求将application / json发布请求的大小限制为10KB。
谢谢
配置最大尺寸后仅适用于有要求Content-Type的multipart/form-data或application/x-www-form- urlencoded。Tomcat中没有开箱即用的机制来限制具有任何其他内容类型的请求的请求主体的大小,因此您必须编写一些代码。
Content-Type
multipart/form-data
application/x-www-form- urlencoded
您可以使用过滤器限制内容长度。例如,将以下类添加到您的Spring Boot应用程序将拒绝与Content- Type兼容application/json且Content-Length超过10000 的请求:
Content- Type
application/json
Content-Length
@Component static class ApplicationJsonRequestSizeLimitFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (isApplicationJson(request) && request.getContentLengthLong() > 10000) { throw new IOException("Request content exceeded limit of 10000 bytes"); } filterChain.doFilter(request, response); } private boolean isApplicationJson(HttpServletRequest httpRequest) { return (MediaType.APPLICATION_JSON.isCompatibleWith(MediaType .parseMediaType(httpRequest.getHeader(HttpHeaders.CONTENT_TYPE)))); } }
请注意,如果Content-Length标头超过10000个字节(例如,使用分块编码的标头),则此过滤器不会拒绝请求。