java线上运行异常:Error parsing HTTP request header

打印 上一主题 下一主题

主题 892|帖子 892|积分 2676

1.部署异常如下:


2.出现原因

这个问题的原因是高版本的tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。而我们的系统在通过地址传参时,在url中传了一段json,传入的参数中有"{"不在RFC3986中的保留字段中,所以会报这个错。
简而言之就是说,高版本的tomcat更加规范,才会出现这种报错

3.解决办法

3.1降低Tomcat的版本(太麻烦,可能你也没有权限做这件事)

3.2 在springboot中添加配置

3.2.1 http请求配置处理
  1. @SpringBootApplication
  2. public class IntelligentBackApplication{
  3.     public static void main(String[] args) {            
  4.       System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
  5.       SpringApplication.run(IntelligentBackApplication.class, args);
  6. } }
复制代码
3.2.2 webmvc配置路径处理
  1. @Configuration
  2. public class CorsConfig implements WebMvcConfigurer {
  3.     @Override
  4.     public void configurePathMatch(PathMatchConfigurer configurer) {
  5.         UrlPathHelper urlPathHelper = new UrlPathHelper();
  6.         urlPathHelper.setUrlDecode(false);
  7.         configurer.setUrlPathHelper(urlPathHelper);
  8.     }
  9. }
复制代码
原文链接:https://blog.csdn.net/a754782427/article/details/126409965

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表