码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 接口报错:The valid characters are defined in RFC 7230 and RFC 3986


    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接收参数,未验证,前后端一起改动比较麻烦,但理论可行。
  • 相关阅读:
    蛇形矩阵(模拟)
    数据库与缓存数据一致性解决方案
    【Ubuntu】解决The repository xxx no longer has a Release file
    存储过程与触发器的练习题
    汇编语言王爽第四版17.3完程可运行可调试
    【JavaEE初阶】 定时器详解与实现
    生态环境综合管理信息化平台推动生态环境部门数字化转型
    医学大数据分析 - 心血管疾病分析 计算机竞赛
    亲戚小孩月薪17k,而我只有4k+,好慌......
    github搜索技巧探索
  • 原文地址:https://blog.csdn.net/weixin_40453395/article/details/126744579
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号