如何在弹簧启动执行器中禁止TRACE http方法

问题描述 投票:0回答:1

我在端口= 8078上有一个服务器,在端口= 8081上有弹簧启动器。我想在两者上禁用TRACE Http方法。我已经创建了定制器bean(见下文)。但是使用这个bean我只允许跟踪8078.看起来执行器看不到这个bean。如何在管理服务器上禁用TRACE http方法?

@ManagementContextConfiguration
public class CustomUndertowCustomizer {
    @Bean
    public WebServerFactoryCustomizer<UndertowServletWebServerFactory> undertowCustomizer() {
        return (factory) ->
                factory.addDeploymentInfoCustomizers(deploymentInfo ->
                        deploymentInfo.addInitialHandlerChainWrapper(handler -> {
                            HttpString[] disallowedHttpMethods = {HttpString.tryFromString("TRACE"),
                                    HttpString.tryFromString("TRACK")};
                            return new DisallowedMethodsHandler(handler, disallowedHttpMethods);
                        }));
    }
}
java spring-boot-actuator http-method
1个回答
0
投票
import java.io.IOException;
           import javax.servlet.FilterChain;
           import javax.servlet.ServletException;
           import javax.servlet.ServletResponse;
           import javax.servlet.http.HttpServletRequest; 
           import javax.servlet.http.HttpServletResponse; 

           import org.springframework.stereotype.Component;     
           import org.springframework.web.filter.OncePerRequestFilter; 

           @Component
           public class Filter extends OncePerRequestFilter { 

               @Override 
               protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) 
                                { 
              try
                   if (req.getMethod().equals("TRACE")) {
                       res.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
                   } else { 
                       filterChain.doFilter(req, res); 
                   }  } catch(Exception e){}
               }
           }
© www.soinside.com 2019 - 2024. All rights reserved.