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