springboot重定向到页面_Spring boot 2:http请求重定向到https方法的变更

随着Springboot 2.0的发布,一些配置方式发生了变化,其中包括HTTP到HTTPS的重定向。原有的EmbeddedServletContainerFactory在新版本中被重命名为TomcatServletWebServerFactory。本文档提供了适配Springboot 2.0的HTTP重定向到HTTPS的配置示例,帮助开发者解决版本升级后遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring boot2.0 版本已经推出一月有余,这次版本升级的幅度很大,很多在1.5版本的的配置属性或类被重命名或者删除,导致以前惯用的写法不再适用,其中就包括http请求重定向到https请求方法的变更。

如果在搜索引擎上搜索springboot 支持http/https,大致能搜到的方法是这样的

// 在某配置类中添加如下内容

// 监听的http请求的端口,需要在application配置中添加http.port=端口号 如80

@Value("${http.port}")

Integer httpPort;

//正常启用的https端口 如443

@Value("${server.port}")

Integer httpsPort;

@Bean

public EmbeddedServletContainerFactory servletContainer() {

TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {

@Override

protected void postProcessContext(Context context) {

SecurityConstraint constraint = new SecurityConstraint();

constraint.setUserConstraint("CONFIDENTIAL");

SecurityCollection collection = new SecurityCollection();

collection.addPattern("/*");

constraint.addCollection(collection);

context.addConstraint(constraint);

}

};

tomcat.addAdditionalTomcatConnectors(httpConnector());

return tomcat;

}

@Bean

public Connector httpConnector() {

Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");

connector.setScheme("http");

//Connector监听的http的端口号

connector.setPort(httpPort);

connector.setSecure(false);

//监听到http的端口号后转向到的https的端口号

connector.setRedirectPort(httpsPort);

return connector;

}

但是在Spring boot2.0中EmbeddedServletContainerFactory 已经被重命名为TomcatServletWebServerFactory,导致上面这段代码不可用,所以在2.0版本我们只需把EmbeddedServletContainerFactory 重命名为TomcatServletWebServerFactory就可以了。修改后的代码大致如下

// 在某配置类中添加如下内容

// 监听的http请求的端口,需要在application配置中添加http.port=端口号 如80

@Value("${http.port}")

Integer httpPort;

//正常启用的https端口 如443

@Value("${server.port}")

Integer httpsPort;

// springboot2 写法

@Bean

public TomcatServletWebServerFactory servletContainer() {

TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {

@Override

protected void postProcessContext(Context context) {

SecurityConstraint constraint = new SecurityConstraint();

constraint.setUserConstraint("CONFIDENTIAL");

SecurityCollection collection = new SecurityCollection();

collection.addPattern("/*");

constraint.addCollection(collection);

context.addConstraint(constraint);

}

};

tomcat.addAdditionalTomcatConnectors(httpConnector());

return tomcat;

}

@Bean

public Connector httpConnector() {

Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");

connector.setScheme("http");

//Connector监听的http的端口号

connector.setPort(httpPort);

connector.setSecure(false);

//监听到http的端口号后转向到的https的端口号

connector.setRedirectPort(httpsPort);

return connector;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值