Spring Boot Tomcat 报错 The valid characters are defined in RFC 7230 and RFC 3986

Spring Boot Tomcat About 1,720 words

错误信息

java.lang.IllegalArgumentException: Invalid character found in the request target [//aaa?bbb=%]. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:494) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.60.jar!/:na]
    at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

解决方法一(推荐)

请求接口方需要进行url encode。尤其是对于百分号%

解决方法二

添加配置支持特殊符号,设置需要兼容的特殊符号

server:
  tomcat:
    relaxed-query-chars:
      - '<'
      - '>'
      - '['
      - ']'
      - '{'
      - '}'
      - '^'
      - '`'
      - '\'
      - '|'

HTTP 规范

https://datatracker.ietf.org/doc/html/rfc3986#section-2.4

https://tools.ietf.org/html/rfc7230

Views: 548 · Posted: 2023-07-13

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh