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

news/2024/11/29 22:53:16/
1.起始:线上突然收到用户反馈,一个文件上传合并接口报错,其他文件无异常,该文件经多次重试仍无法成功
2.排查:查看前端nginx日志无异常,查看后台日志发现该用户使用该接口有报错情况
3.具体报错:
2022-09-07 09:18:32.644 INFO  10.5.164.168 30579---[http-nio-8080-exec-10] xxx.xxx.xxx.controller.OssController:426 - 分片上传 user: 15120048348 upload file: [三农报道]口感香甜.mp4 file size: 109014716 chunkSize: 52428800 identifier:379c826c537c2cc1cda2c14d738cf3cb
2022-09-07 09:21:59.651 INFO  10.5.164.168 30579---[http-nio-8080-exec-2] org.apache.coyote.http11.Http11Processor:175 - Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target [/aliyun/oss/merge?identifier=379c826c537c2cc1cda2c14d738cf3cb&fileName=[%E4%B8%AD%E5%9B%BD%E4%B8%89%E5%86%9C%E6%8A%A5%E9%81%93]%E9%A6%99%E6%B0%94%E6%B5%93%E9%83%81%E5%8F%A3%E6%84%9F%E9%A6%99%E7%94%9C.mp4&totalChunks=2]. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:491)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
4.问题分析:该问题由于fileName字段使用了不支持的字符[]导致,理论上还有其他不支持字符也会报错,猜测对该字段的值进行编码即可解决。
5.解决措施1:前端对fileName字段值使用 encodeURIComponent进行URL编码,经验证后端无影响,问题解决。
6.解决措施2:前端使用post方式传输参数,后端采用post方式requestBode接收参数,未验证,前后端一起改动比较麻烦,但理论可行。

http://www.ppmy.cn/news/416294.html

相关文章

RFC 7230 and RFC 3986 各版本tomcat解决方法

项目从原先的jdk1.6tomcat6(6.0.26) 升级为jdk1.8tomcat9(9.022)。升级完后在tomcat日志中发现经常会出现RFC 7230 and RFC 3986 这个错误。于是在网上搜集资料,做个总结。 首先出现这个问题是原因高版本的tomcat会严格按照对RFC 3986规范进行访问解析。 RFC 3986规…

The HTTP header line [connection : Keep-alive] does not conform to RFC 7230 and has been ignored

在测试一个程序的时候,出现了“The HTTP header line [connection : Keep-alive] does not conform to RFC 7230 and has been ignored”这个错误;经搜索关键字 RFC 7230发现是tomcat高版本中,严格按照规范解析。 百度了一下解决方案&#x…

解决 Tomcat 7230 and 3986 错误异常

今天,我们来讲一下,tomcat 版本过高而引发的7230和3986 的错误 ,这个错误是我更换了浏览器之后所引发的异常错误信息,所以就在这里跟大家讲一下: 一、原因浏览器从谷歌更换成内部浏览器, 图示:…

从7290转为7230

好久没有写博客了,一是不知道该写什么,二是没有时间,买房子、结婚、加班。劳累的生活!转入正题,原来的blackberry送人了,五月份又入手了一台全新7230。 7230和7290从外观上非常接近,外观上最大的不同点就是:1、背光按…

The valid characters are defined in RFC 7230 and RFC 3986问题

最近在ssm实践项目中遇到了The valid characters are defined in RFC 7230 and RFC 3986这个问题,折腾了两天时间终于搞定了,记录一下心得。 1、首先贴出报错日志: 09-Apr-2019 14:55:11.427 信息 [http-nio-8089-exec-8] org.apache.coyote…

tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法

问题描述 今天在测试接口的是否使用tomcat启动服务,然后通过get请求去测试接口,页面返回报的错误是400。 tomcat中错误如下图所示: 请求参数为 location[{"lng":108.871597,"lat":34.194412}] 很明显,在loca…

IE上的The valid characters are defined in RFC 7230 and RFC 3986坑

前言 日常开发中经常遇到一些莫名其妙的小问题,例如即将上线的项目在线上异常报错,但是在本地确可以正常运行。往往这猝不及防的小惊喜,真是让我们猿猿欲哭无泪啊。这里简单总结一下在IE浏览器上遇到的一个小坑,之前就因为这个小…

IE上的 The valid characters are defined in RFC 7230 and RFC 3986 坑的解决方法

前言 日常开发中经常遇到一些莫名其妙的小问题,例如即将上线的项目在线上异常报错,但是在本地确可以正常运行。往往这猝不及防的小惊喜,真是让我们猿猿欲哭无泪啊。这里简单总结一下在IE浏览器上遇到的一个小坑,之前就因为这个小…