Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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引导禁用底拖中的http跟踪/跟踪_Java_Spring_Http_Spring Boot_Undertow - Fatal编程技术网

Java 使用spring引导禁用底拖中的http跟踪/跟踪

Java 使用spring引导禁用底拖中的http跟踪/跟踪,java,spring,http,spring-boot,undertow,Java,Spring,Http,Spring Boot,Undertow,我想禁用undertow中的http跟踪。我使用的是弹簧靴,默认情况下,它提供了牵引力。我已排除tomcat和使用底拖。我在其他stackoverflow帖子()中得到了tomcat的答案,但我找不到同样的答案。这就是我到现在为止所做的 @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomiz

我想禁用undertow中的http跟踪。我使用的是弹簧靴,默认情况下,它提供了牵引力。我已排除tomcat和使用底拖。我在其他stackoverflow帖子()中得到了tomcat的答案,但我找不到同样的答案。这就是我到现在为止所做的

    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return new EmbeddedServletContainerCustomizer() {
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                if (container.getClass().isAssignableFrom(UndertowEmbeddedServletContainerFactory.class)) {
                    UndertowEmbeddedServletContainerFactory underTowContainer = (UndertowEmbeddedServletContainerFactory) container;
                    underTowContainer.addDeploymentInfoCustomizers(new ContextSecurityCustomizer());
                }
            }
        };
    }

    private static class ContextSecurityCustomizer implements UndertowDeploymentInfoCustomizer {
        @Override
        public void customize(DeploymentInfo deploymentInfo) {
            DeploymentInfo info = new DeploymentInfo();
            // What next after this
        }
    }

请帮我完成这个代码。我走的方向对吗?提前感谢

这应该适用于下拖:

@Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return new EmbeddedServletContainerCustomizer() {
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                if (container.getClass().isAssignableFrom(UndertowEmbeddedServletContainerFactory.class)) {
                    UndertowEmbeddedServletContainerFactory undertowContainer = (UndertowEmbeddedServletContainerFactory) container;
                    undertowContainer.addDeploymentInfoCustomizers(new ContextSecurityCustomizer());
                }
            }
        };
    }

    private static class ContextSecurityCustomizer implements UndertowDeploymentInfoCustomizer {

        @Override
        public void customize(io.undertow.servlet.api.DeploymentInfo deploymentInfo) {
            SecurityConstraint constraint = new SecurityConstraint();
            WebResourceCollection traceWebresource = new WebResourceCollection();
            traceWebresource.addUrlPattern("/*");
            traceWebresource.addHttpMethod(HttpMethod.TRACE.toString());
            constraint.addWebResourceCollection(traceWebresource);
            deploymentInfo.addSecurityConstraint(constraint);
        }

    }

您可以使用
DisallowedMethodsHandler
从下拖:

import io.undertow.server.handlers.DisallowedMethodsHandler;

@Component
public class UndertowWebServerCustomizer
        implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {

    @Override
    public void customize(UndertowServletWebServerFactory factory) {

        factory.addDeploymentInfoCustomizers(deploymentInfo -> {
            deploymentInfo.addInitialHandlerChainWrapper(new HandlerWrapper() {
                @Override
                public HttpHandler wrap(HttpHandler handler) {
                    HttpString[] disallowedHttpMethods = { HttpString.tryFromString("TRACE"),
                        HttpString.tryFromString("TRACK") };
                    return new DisallowedMethodsHandler(handler, disallowedHttpMethods);
                }
            });
        });
    }
}
导入io.undertow.server.handlers.DisallowedMethodsHandler;
@组成部分
WebServerCustomizer下的公共类
实现WebServerFactoryCustomizer{
@凌驾
public void自定义(位于TowServletWebServerFactory下){
factory.addDeploymentInfoCustomizers(deploymentInfo->{
deploymentInfo.addInitialHandlerChainWrapper(新的HandlerWrapper(){
@凌驾
公共HttpHandler包装(HttpHandler){
HttpString[]不允许HttpMethods={HttpString.tryFromString(“跟踪”),
HttpString.tryFromString(“TRACK”)};
返回新的DisallowedMethodsHandler(处理程序,disallowedHttpMethods);
}
});
});
}
}