主頁 > 知識庫 > tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)

tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)

熱門標(biāo)簽:比較穩(wěn)定的外呼系統(tǒng) ai電話機(jī)器人營銷 山東電信外呼系統(tǒng)靠譜嗎 400 電話 申請費用 江蘇自動外呼系統(tǒng)一般多少錢 信貸電銷機(jī)器人系統(tǒng) 云南云電銷機(jī)器人招商 長沙回?fù)芡夂粝到y(tǒng) 鸚鵡螺號航海地圖標(biāo)注時間

1.情景展示

  tomcat 日志時不時會報出如下異常信息,到底是怎么回事?

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.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

  頁面無法打開

2.原因分析  

  意思是:請求頭中包含了 RFC 7230 and RFC 3986規(guī)范中定義的非法字符,在這種情況下就會導(dǎo)致頁面報400異常。 

  原因就是:tomcat的版本過高造成的,網(wǎng)上說,tomcat高于 7.0.73的版本,添加了對于http頭(請求頭)的驗證。

  get請求,即問號傳參,就是只有請求頭,沒有請求體

  RFC3986文檔規(guī)定,Url中只允許包含英文字母(a-zA-Z)、數(shù)字(0-9)、-_.~4個特殊字符以及所有保留字符。

  RFC3986中指定了以下字符為保留字符:! * ' ( ) ; : @ & = + $ , / ? # [ ]

  同時RFC 3986規(guī)范在tomcat7.0.73版本中就已經(jīng)提出了,RFC 7230也是對前者的一些補(bǔ)充或者說是完善,所以在tomcat7.0.73及以上版本都會有這種問題。 

  說明:這種情況,只在IE瀏覽器下會出現(xiàn),因為IE瀏覽器不會對中文參數(shù)進(jìn)行編碼,而其它類型的瀏覽器會默認(rèn)自動對中文進(jìn)行編碼。

3.解決方案

  方法一:降低tomcat版本;

  經(jīng)過測試發(fā)現(xiàn),網(wǎng)上關(guān)于tomcat的最高版本要求描述有誤,不是低于7.0.73就可以。

  我下載了一個tomcat7.0.70,運行項目后,還是會字符集的錯誤,導(dǎo)致網(wǎng)頁無法打開。

  但是,我測了tomcat7.0.61,完美正常運行項目,控制臺不再報錯,網(wǎng)頁可以正常打開了。

  64位下載地址:https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61-windows-x64.zip

  32位下載地址:https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61-windows-x86.zip

  方法二:將get請求改為post請求;(推薦使用)

  方法三:get請求(問號傳參)

  使用URIEncoder()函數(shù),將中文進(jìn)行編碼

以上就是tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)的詳細(xì)內(nèi)容,更多關(guān)于tomcat 異常解決的資料請關(guān)注腳本之家其它相關(guān)文章!

標(biāo)簽:衡陽 亳州 運城 齊齊哈爾 烏海 拉薩 澳門 嘉興

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)》,本文關(guān)鍵詞  tomcat,異常,解決,Invalid,character,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)》相關(guān)的同類信息!
  • 本頁收集關(guān)于tomcat異常解決(Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章