学习-Springboot禁止内置Tomcat不安全的HTTP方法

学习问题记录

用SpringBoot开发的项目在进行测试时,除GET、POST之外的HTTP请求方式都需要禁止,由于使用的内置Tomcat,试了几种方式,最后记录一下。

解决方式:

对独立启动的tomcat,修改配置文件即可,在网上可以找到很多。而对Springboot内置的tomcat,要添加配置类或者配置properties文件:
第一种方式(最终使用的):
. 添加配置类:
使用环境:JDK1.8
不需要添加maven依赖,tomcat内置在springboot包里。

@Configuration
public class TomcatConfig {
	@Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcatServletContainerFactory = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                collection.addPattern("/ywyydsj/*");
	            collection.addMethod("HEAD");
	            collection.addMethod("PUT");
	            collection.addMethod("PATCH");
	            collection.addMethod("DELETE");
	            collection.addMethod("OPTIONS");
	            collection.addMethod("TRACE");
	            collection.addMethod("COPY");
	            collection.addMethod("SEARCH");
	            collection.addMethod("PROPFIND");
	            constraint.addCollection(collection);
	            constraint.setAuthConstraint(true);
	            context.addConstraint(constraint);
	            context.setUseHttpOnly(true);
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcatServletContainerFactory.addConnectorCustomizers(connector -> {
            connector.setAllowTrace(true);
        });
        return tomcatServletContainerFactory;
    }
 
}

第二种方式(仅供参考,试了下没起作用):
在配置文件application.porperties中添加如下配置:

#禁止不安全的HTTP方法
server.tomcat.port-header=HEAD,PUT,DELETE,OPTIONS,TRACE,COPY,SEARCH,PROPFIND

出现过一次OPTIONS在设置后,仍然可以使用情况,添加配置如下:

spring.mvc.dispatch-options-request=true

配置完成后可以使用POSTMAN进行测试,查看禁用的方法是否禁用成功。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值