访问 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); } }
添加如上红色行,即可解决。