解決FineReport 中下拉框報錯問題,無需降級tomcat版本

解決辦法:修改tomcat配置文件 conf/catalina.properties

 

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

 

 

目錄:

一、問題描述
二、解決方案
一、問題描述
 

有時候,我們製作的填報表在本地帆軟自帶環境中運行一切正常。但部署到服務器Tomcat環境後,選擇報表下拉框時,彈出“獲取數據發生錯誤” 報錯信息。


 

檢查Tomcat運行日誌,(部分截圖)如下:

 

信息:Error parsing HTTP request header 

Note: further occurrences of HTTP header 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

 

 

二、解決方案
 

A):據資料得知,最新的Tomcat6、7、8、9都有類似問題。

 

    原因是由於Tomcat新版本增加了一個新特性:就是嚴格按照 RFC 3986規範進行訪問解析,而 RFC 3986規範定義了Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字符以及所有保留字符(RFC3986中指定了以下字符爲保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]),花括號{} 123和125不包含在列。

 

    而在URL中如果出現非法字符(非上述內容),就需要對非法字符進行編碼再訪問。由於帆軟沒有對花括號{}進行編碼,所以才導致訪問報錯!

解決辦法:修改tomcat配置文件 conf/catalina.properties

 

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章