在 Undertow 中将 HTTP 重定向到 HTTPS
Posted
技术标签:
【中文标题】在 Undertow 中将 HTTP 重定向到 HTTPS【英文标题】:Redirect HTTP to HTTPS in Undertow 【发布时间】:2015-03-11 12:25:52 【问题描述】:如何在 Undertow 中配置 HTTP->HTTPS 重定向?我查看了 Undertow 的代码库,有些类似乎是相关的(例如 RedirectHandler)。此外,Undertow 文档 (Predicates Attributes and Handlers) 似乎正是针对这个问题。但我不知道从哪里开始。
基本上,我正在寻找的是 Apache 的 mod_rewrite 配置的对应物:
RewriteEngine On
RewriteCond %HTTPS off
RewriteRule (.*) https://%HTTP_HOST%REQUEST_URI
谢谢!
【问题讨论】:
【参考方案1】: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;
);
【讨论】:
这种方法可以使用301永久重定向代替默认的302重定向吗? @Thermometer - 不确定,从未尝试使用DeploymentInfo
进行重定向。
如果您想要完整的实现,请参考以下***.com/a/54908727/7538821以上是关于在 Undertow 中将 HTTP 重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java Undertow 服务器将 HTTPS 请求重定向到 HTTP?
在 AWS ELB 后面带有嵌入式 Undertow 的 Spring Boot - HTTP 到 HTTPS 重定向
undertow-handlers.conf 中的规则将 HTTP 重定向到 HTTPS
在 apache red hat 中将 http 重定向到 https