gpt4 book ai didi

java - 使用 spring boot 在 undertow 中禁用 http TRACK/TRACE

转载 作者:可可西里 更新时间:2023-11-01 17:27:00 39 4
gpt4 key购买 nike

我想在 undertow 中禁用 http TRACE。我正在使用 spring boot 并且默认情况下提供了 undertow。我已经排除了 tomcat 并使用了 undertow。我在其他 stackoverflow 帖子 ( here ) 中得到了 tomcat 的答案,但我无法为 undertow 找到相同的答案。这就是我到目前为止所做的。

    @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
}
}

请帮我完成这段代码。我什至在朝着正确的方向前进吗?提前致谢

最佳答案

您可以使用来自 undertow 的 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);
}
});
});
}
}

关于java - 使用 spring boot 在 undertow 中禁用 http TRACK/TRACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336518/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com