报错:The valid characters are defined in RFC 7230 and RFC 3986

 

访问 spring boot controller时,报错:The valid characters are defined in RFC 7230 and RFC 3986

1、特殊符号

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        
        //允许特殊符号,本例是 | { } 做入参,也可追加其他符号
        System.setProperty("tomcat.util.http.parser.HttpParser.requestTargetAllow","|{}");
    }
}

新增红色行,解决。

原因:tomcat9不允许特殊字符传送

 

以上解决的是 特殊符号作为参数传递的问题。但是,参数是中文乱码问题,没有解决。

2、中文乱码

@Configuration
public class JsonConfig {
    @Bean
    public HttpMessageConverters fastJsonConfigure() {
        //fastjson
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        List<MediaType> fastMediaTypes = CollUtil.newArrayList(MediaType.APPLICATION_JSON_UTF8);
        fastConverter.setSupportedMediaTypes(fastMediaTypes);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        //string(解决传递参数中文乱码)
        StringHttpMessageConverter StringConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
        return new HttpMessageConverters(fastConverter,StringConverter);
    }
}

添加如上红色行,即可解决。

 

posted @ 2019-02-11 13:35  遥远2  阅读(528)  评论(0编辑  收藏  举报