`

Springboot http端口访问url请求自动跳转至https端口访问

 
阅读更多

springboot应用程序中通过Catalina Connector将http重定向到https

.......

import org.apache.catalina.Context;

import org.apache.catalina.connector.Connector;

import org.apache.tomcat.util.descriptor.web.SecurityCollection;

import org.apache.tomcat.util.descriptor.web.SecurityConstraint;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

import org.springframework.boot.web.servlet.server.ServletWebServerFactory;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

@Configuration

public class HttpsConfig {

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

    private int httpsPort;

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

    private int httpPort;

 

    @Bean

    public ServletWebServerFactory servletContainer() {

        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {

            @Override

            protected void postProcessContext(Context context) {

                SecurityConstraint securityConstraint = new SecurityConstraint();

                securityConstraint.setUserConstraint("CONFIDENTIAL");

                SecurityCollection collection = new SecurityCollection();

                collection.addPattern("/*");

                collection.addMethod(DEFAULT_PROTOCOL);//注意:适用于所有HTTP请求方法,如 POST,PUT,DELETE,GET 等

                securityConstraint.addCollection(collection);

                context.addConstraint(securityConstraint);

            }

        };

        tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());

        return tomcat;

    }

 

    private Connector initiateHttpConnector() {

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

        connector.setScheme("http");

        connector.setPort(httpPort);

        connector.setSecure(false);

        connector.setRedirectPort(httpsPort);

        

        return connector;

    }

}

 

注意: collection.addMethod(DEFAULT_PROTOCOL);若不加这行代码,会发现post请求不能自动跳转,默认Get请求是进行跳转

参考文档链接:http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/deploy/SecurityCollection.html#addMethod(java.lang.String)

 

分享到:
评论

相关推荐

    springboot023基于Springboot学生宿舍管理系统毕业源码案例设计.zip

    同时,`@RequestMapping`注解用于定义URL映射,`@GetMapping`、`@PostMapping`等用于处理GET和POST请求。在`StudentController`或类似的类中,可以看到这些处理用户请求的方法。 数据库方面,SpringBoot集成了...

    springboot+shiro+vue实现的简易教务系统.zip

    SpringBoot的核心特性包括自动配置、内嵌Web服务器(如Tomcat)以及起步依赖等,使得开发者能够快速构建可运行的应用程序。在本教务系统中,SpringBoot负责提供基础服务,如数据访问、安全控制、 RESTful API等。 ...

    基于Springboot(后端)+Vue(前端)实现的运输车辆管理系统.zip

    《构建基于Springboot+Vue的运输车辆管理系统》 在当今数字化时代,企业对高效、智能的运输车辆管理系统的诉求日益增长。本系统采用先进的技术栈,即Springboot作为后端框架,Vue作为前端框架,旨在提供一个高效、...

    基于Springboot+Vue星之语明星周边产品销售网站源码案例设计.zip

    - **路由(vue-router)**:负责页面跳转,定义各个页面的URL及对应的组件。 - **组件**:将界面拆分成多个可复用的部分,如Header、Footer、ProductList、ShoppingCart等。 - **Vuex状态管理**:管理全局状态,...

    29-Spring Boot自己实现简版OAuth21

    3. **OAuth2Controller**:处理授权请求,包括重定向至登录页面(authorize 方法)和用户登录验证(login 方法)。 4. **AccessTokenController**:提供 RESTful 接口,处理获取访问令牌的请求,注意解决跨域问题,...

    解决vue打包项目后刷新404的问题

    在Vue.js应用开发中,当我们使用`npm run build`命令将项目打包成生产环境的静态资源时,可能会遇到一个问题:用户在访问应用时,如果直接刷新页面或通过URL链接进入,浏览器会返回404错误。这是因为Vue.js采用的是...

    Desktop.rar

    这涉及到HTTP请求库如axios的使用,以及SpringBoot中的CORS配置。 “端口地址设置关联”是指在开发阶段,开发者需要确保前端应用知道如何向后端服务发送请求。这可能涉及到在Vue.js中设置API基础URL,或者在...

    支付宝电脑支付H5支付微信电脑支付H5支付在IDEA上直接运行

    5. **测试支付流程**:通过浏览器访问项目的支付接口,如`/pay/alipay`(支付宝电脑支付)或`/pay/wechat`(微信电脑支付),然后按照提示完成支付。 6. **处理回调**:在实际环境中,需要配置一个真实的服务器地址...

    苹果管理系统项目开发日记V1.0.pdf

    例如,在AppleController中,使用@Controller注解来标记该类为控制层组件,使用@RequestMapping来映射请求URL,使用@Autowired来实现自动依赖注入。在处理HTTP请求时,返回值类型modelAndView可以将模型和视图组合在...

    cas单点登录配置及资源

    - 登录跳转逻辑:根据CAS协议,服务提供商需配置登录和验证失败的重定向URL。 5. **问题及解决** - 重定向循环:可能导致的原因有配置错误、票证验证失败等,需检查CAS服务器和服务提供商的配置。 - SSL问题:...

Global site tag (gtag.js) - Google Analytics