濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 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 電話 申請(qǐng)費(fèi)用 江蘇自動(dòng)外呼系統(tǒng)一般多少錢 信貸電銷機(jī)器人系統(tǒng) 云南云電銷機(jī)器人招商 長(zhǎng)沙回?fù)芡夂粝到y(tǒng) 鸚鵡螺號(hào)航海地圖標(biāo)注時(shí)間

1.情景展示

  tomcat 日志時(shí)不時(shí)會(huì)報(bào)出如下異常信息,到底是怎么回事?

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.原因分析  

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

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

  get請(qǐng)求,即問號(hào)傳參,就是只有請(qǐng)求頭,沒有請(qǐng)求體

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

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

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

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

3.解決方案

  方法一:降低tomcat版本;

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

  我下載了一個(gè)tomcat7.0.70,運(yùn)行項(xiàng)目后,還是會(huì)字符集的錯(cuò)誤,導(dǎo)致網(wǎng)頁無法打開。

  但是,我測(cè)了tomcat7.0.61,完美正常運(yùn)行項(xiàng)目,控制臺(tái)不再報(bào)錯(cuò),網(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請(qǐng)求改為post請(qǐng)求;(推薦使用)

  方法三:get請(qǐng)求(問號(hào)傳參)

  使用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 異常解決的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

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

巨人網(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)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(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)民參考!
  • 推薦文章
    藁城市| 南川市| 明光市| 靖远县| 华安县| 广东省| 綦江县| 中方县| 海丰县| 阜康市| 来凤县| 克山县| 南漳县| 托克逊县| 海丰县| 张掖市| 青阳县| 扎囊县| 乡宁县| 武汉市| 吐鲁番市| 洞口县| 湘阴县| 大埔县| 汉寿县| 同德县| 长白| 丰原市| 东丽区| 斗六市| 莫力| 松桃| 上高县| 阿尔山市| 中西区| 建水县| 淮安市| 漾濞| 镇赉县| 桐柏县| 大渡口区|