springboot RFC 7230 and RFC 问题

2019-05-22  本文已影响0人  zhuyuansj

由于前端有很多接口是调用原来平台,接口不规范,全部再url当中拼接参数,有"",{}等各种特殊字符。springboot默认集成tomcat8,tomcact8又作了校验,即使修改配置依然无法对"进行解析,会报The valid characters are defined in RFC 7230 and RFC 3986错误。由于前端无法修改.所以就单独弄了个服务,再marven设置不使用tomcat容器,使用jetty解决了这个问题(这个服务就专门接收前端这种不规则得字符)如下是操作方法。
错误信息:

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:192)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1028)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

不用tomcat,改用jetty可以解决

排除tomcat启动器

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
   </exclusions>
</dependency>

添加jetty启动器

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

原文转自:springboot内置tomcat不支持中文字符集解决

上一篇下一篇

猜你喜欢

热点阅读