在 Undertow 中将 HTTP 重定向到 HTTPS
Redirect HTTP to HTTPS in Undertow
如何在 Undertow 中配置 HTTP->HTTPS 重定向?我查看了 Undertow 的代码库,有一些 类 似乎是相关的(例如 RedirectHandler)。此外,Undertow 文档 (Predicates Attributes and Handlers) 似乎正是针对这个问题。但我不确定从哪里开始。
基本上,我正在寻找的是与 Apache 的 mod_rewrite 配置相对应的东西:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
谢谢!
This answer 指出了正确的方向。以编程方式,必须将 SecurityConstraint
添加到 Builder
并设置 ConfidentialPortManager
:
DeploymentInfo servletBuilder = Servlets.deployment();
servletBuilder.addSecurityConstraint(new SecurityConstraint()
.addWebResourceCollection(new WebResourceCollection()
.addUrlPattern("/*"))
.setTransportGuaranteeType(TransportGuaranteeType.CONFIDENTIAL)
.setEmptyRoleSemantic(EmptyRoleSemantic.PERMIT))
.setConfidentialPortManager(new ConfidentialPortManager() {
@Override
public int getConfidentialPort(HttpServerExchange exchange) {
return 443;
}
}
);
如何在 Undertow 中配置 HTTP->HTTPS 重定向?我查看了 Undertow 的代码库,有一些 类 似乎是相关的(例如 RedirectHandler)。此外,Undertow 文档 (Predicates Attributes and Handlers) 似乎正是针对这个问题。但我不确定从哪里开始。
基本上,我正在寻找的是与 Apache 的 mod_rewrite 配置相对应的东西:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
谢谢!
This answer 指出了正确的方向。以编程方式,必须将 SecurityConstraint
添加到 Builder
并设置 ConfidentialPortManager
:
DeploymentInfo servletBuilder = Servlets.deployment();
servletBuilder.addSecurityConstraint(new SecurityConstraint()
.addWebResourceCollection(new WebResourceCollection()
.addUrlPattern("/*"))
.setTransportGuaranteeType(TransportGuaranteeType.CONFIDENTIAL)
.setEmptyRoleSemantic(EmptyRoleSemantic.PERMIT))
.setConfidentialPortManager(new ConfidentialPortManager() {
@Override
public int getConfidentialPort(HttpServerExchange exchange) {
return 443;
}
}
);