在 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

如何使用undertow将非www URL重定向到jboss中的www URL

Wildfly Undertow 中的 HTTPS 重定向