SpringBoot get请求特殊字符处理

文章讲述了在进行测试时,由于输入框中的特殊字符(如中括号)导致GET请求出错,原因是Tomcat遵循URI编码标准RFC3986,不允许某些字符。解决方案包括前端对特殊字符进行转译或在SpringBoot后端配置中解除Tomcat的拦截,允许特定的特殊字符。
摘要由CSDN通过智能技术生成

起因:测试在输入框[](中括号),然后get请求报错
报错:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
分析:本地Swagger请求后台无错误。和前段联调发现该错误。
错误原因:在tomcat中是遵循的是URI编码标准(RFC 3986),该规范只允许包含 a-zA-Z 0-9 - _ . ~ 以及所有保留字符。所以我们需要放行。
解决办法:
1.前端转译,比如空格在url地址中就是20%
2.后端tomcat解除拦截
以下是springboot解决方式,如果是spring3.0则修改tomcat配置

@Configuration
public class TomcatConfig {

    @Bean
    public ConfigurableServletWebServerFactory webServerFactory(){
        TomcatServletWebServerFactory factory =new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer() {
            @Override
            public void customize(Connector connector) {
                connector.setProperty("relaxedQueryChars","|[]");
            }
        });
        return factory;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值