Configure Undertow not to presever path on forward by default
Closes gh-23619
This commit is contained in:
@@ -1548,6 +1548,11 @@ public class ServerProperties {
|
|||||||
*/
|
*/
|
||||||
private Duration noRequestTimeout;
|
private Duration noRequestTimeout;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to preserve the path of a request when it is forwarded.
|
||||||
|
*/
|
||||||
|
private boolean preservePathOnForward = false;
|
||||||
|
|
||||||
private final Accesslog accesslog = new Accesslog();
|
private final Accesslog accesslog = new Accesslog();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1675,6 +1680,14 @@ public class ServerProperties {
|
|||||||
this.noRequestTimeout = noRequestTimeout;
|
this.noRequestTimeout = noRequestTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isPreservePathOnForward() {
|
||||||
|
return this.preservePathOnForward;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPreservePathOnForward(boolean preservePathOnForward) {
|
||||||
|
this.preservePathOnForward = preservePathOnForward;
|
||||||
|
}
|
||||||
|
|
||||||
public Accesslog getAccesslog() {
|
public Accesslog getAccesslog() {
|
||||||
return this.accesslog;
|
return this.accesslog;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ public class UndertowServletWebServerFactoryCustomizer
|
|||||||
@Override
|
@Override
|
||||||
public void customize(UndertowServletWebServerFactory factory) {
|
public void customize(UndertowServletWebServerFactory factory) {
|
||||||
factory.setEagerInitFilters(this.serverProperties.getUndertow().isEagerFilterInit());
|
factory.setEagerInitFilters(this.serverProperties.getUndertow().isEagerFilterInit());
|
||||||
|
factory.setPreservePathOnForward(this.serverProperties.getUndertow().isPreservePathOnForward());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,4 +40,14 @@ class UndertowServletWebServerFactoryCustomizerTests {
|
|||||||
assertThat(factory.isEagerInitFilters()).isFalse();
|
assertThat(factory.isEagerInitFilters()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void preservePathOnForwardCanBeEnabled() {
|
||||||
|
UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory(0);
|
||||||
|
assertThat(factory.isPreservePathOnForward()).isFalse();
|
||||||
|
ServerProperties serverProperties = new ServerProperties();
|
||||||
|
serverProperties.getUndertow().setPreservePathOnForward(true);
|
||||||
|
new UndertowServletWebServerFactoryCustomizer(serverProperties).customize(factory);
|
||||||
|
assertThat(factory.isPreservePathOnForward()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,8 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
|
|||||||
|
|
||||||
private boolean eagerInitFilters = true;
|
private boolean eagerInitFilters = true;
|
||||||
|
|
||||||
|
private boolean preservePathOnForward = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new {@link UndertowServletWebServerFactory} instance.
|
* Create a new {@link UndertowServletWebServerFactory} instance.
|
||||||
*/
|
*/
|
||||||
@@ -261,6 +263,26 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
|
|||||||
this.eagerInitFilters = eagerInitFilters;
|
this.eagerInitFilters = eagerInitFilters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return where the request path should be preserved on forward.
|
||||||
|
* @return {@code true} if the path should be preserved when a request is forwarded,
|
||||||
|
* otherwise {@code false}.
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public boolean isPreservePathOnForward() {
|
||||||
|
return this.preservePathOnForward;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether the request path should be preserved on forward.
|
||||||
|
* @param preservePathOnForward {@code true} if the path should be preserved when a
|
||||||
|
* request is forwarded, otherwise {@code false}.
|
||||||
|
* @since 2.4.0
|
||||||
|
*/
|
||||||
|
public void setPreservePathOnForward(boolean preservePathOnForward) {
|
||||||
|
this.preservePathOnForward = preservePathOnForward;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WebServer getWebServer(ServletContextInitializer... initializers) {
|
public WebServer getWebServer(ServletContextInitializer... initializers) {
|
||||||
Builder builder = this.delegate.createBuilder(this);
|
Builder builder = this.delegate.createBuilder(this);
|
||||||
@@ -283,6 +305,7 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
|
|||||||
deployment.setResourceManager(getDocumentRootResourceManager());
|
deployment.setResourceManager(getDocumentRootResourceManager());
|
||||||
deployment.setTempDir(createTempDir("undertow"));
|
deployment.setTempDir(createTempDir("undertow"));
|
||||||
deployment.setEagerFilterInit(this.eagerInitFilters);
|
deployment.setEagerFilterInit(this.eagerInitFilters);
|
||||||
|
deployment.setPreservePathOnForward(this.preservePathOnForward);
|
||||||
configureMimeMappings(deployment);
|
configureMimeMappings(deployment);
|
||||||
for (UndertowDeploymentInfoCustomizer customizer : this.deploymentInfoCustomizers) {
|
for (UndertowDeploymentInfoCustomizer customizer : this.deploymentInfoCustomizers) {
|
||||||
customizer.customize(deployment);
|
customizer.customize(deployment);
|
||||||
|
|||||||
Reference in New Issue
Block a user