invalid character found in the request target 异常
2019獨角獸企業重金招聘Python工程師標準>>>
這個異常時因為Tomcat 9不支持請求格式出現“{”等非法字符的問題
因為tomcat版本問題遇到的坑,記錄一下。
問題
今天由于要測試一下訂單詳情頁的異步查詢,在本地起了一個服務,發送的請求是:
http://sellerorder.mogujie.com:8080/api/order/detail4seller?data={%22shopOrderId%22:%2224296908588336%22,%22orderPlatFormCode%22:%22PC%22}
按理說應該沒啥問題,但是報如下的錯:
22-Aug-2018 11:58:23.262 信息 [http-nio-8080-exec-4] org.apache.coyote.http11.Http11Processor.service 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.?The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:467)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:764)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1388)
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)
解決辦法
可以看到是說有非法字符,于是去度娘找解決辦法,找到了解決辦法的博客如下:
https://blog.csdn.net/testcs_dn/article/details/71716829
修改后重啟服務器發現還是沒有解決,于是查資料,發現有可能是tomcat版本的問題,于是把tomcat 9 換成了tomcat 8,
將tomcat 8的conf路徑下的 catalina.properties 文件進行修改,在最后加入一句:tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}?
允許tomcat接收“{”這樣的特殊字符,重啟后問題解決。
總結
有很多情況下,在嘗試很多辦法后仍無法解決的話,試著換一下tomcat的版本,盡量不要用高版本的tomcat,還是用相對穩定一些的版本,不然就會有坑。
轉載于:https://my.oschina.net/edwardge/blog/1932018
總結
以上是生活随笔為你收集整理的invalid character found in the request target 异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模块的补充
- 下一篇: ionic 修改开发工具的配置