1. 程式人生 > >tomcat7.0.70升級為7.0.76後異常 Invalid character found in the request target. 解決

tomcat7.0.70升級為7.0.76後異常 Invalid character found in the request target. 解決

solr5.3部署在tomcat7.0.70上執行正常,升級為7.0.76之後啟動正常,訪問solr控制檯異常:

三月 28, 2017 2:29:42 下午 org.apache.coyote.http11.AbstractHttp11Processor process
資訊: 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 at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:189) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1000) 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)

查資料瞭解到最新的tomcat6 7 8 都有這個問題,這個問題是由於tomcat的新版本增加了一個新特性,就是嚴格按照 RFC 3986規範進行訪問解析,而 RFC 3986規範定義了Url中只允許包含英文字母(a-zA-Z)、數字(0-9)、-_.~4個特殊字元以及所有保留字元(RFC3986中指定了以下字元為保留字元:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。

用Fiddler抓包發現請求連結都是400的狀態,就是請求引數有誤。請求連結中都包含有一個引數名為值為${version}的引數(http://127.0.0.1:8080/solr/css/styles/common.css?_=${version})。單獨請求這個連結同樣訪問失敗,將?=${version}刪除後可正常訪問。對照 RFC 3986規範中的定義發現${version}中的一對大括號不在 RFC 3986規範定義的保留字元中。

此時問題已經找到了,就是因為這對大括號引起的錯誤。這時候的解決方案應是對url中的非法字元進行編碼。手動把一對大括號進行編碼後連結為:http://127.0.0.1:8080/solr/css/styles/common.css?_=${version} 經測試,該連結可正常訪問。接下來要修改原始碼中的過濾器,對所有請求連結進行UrlEncode編碼。
修改原始碼的時候發現樣式和js的請求都在首頁html中寫死了。格式為:

<link rel="stylesheet" type="text/css" href="css/styles/common.css?_=${version}">

偷個懶只修改了html中的內容,將?_=${version}直接刪除,最終格式為:

<link rel="stylesheet" type="text/css" href="css/styles/common.css">

重新部署啟動solr,首頁訪問OK!

相關推薦

tomcat7.0.70升級7.0.76異常 Invalid character found in the request target. 解決

solr5.3部署在tomcat7.0.70上執行正常,升級為7.0.76之後啟動正常,訪問solr控制檯異常: 三月 28, 2017 2:29:42 下午 org.apache.coyote.http11.AbstractHttp11Processor

Invalid character found in the request target , 在SpringBoot2.0.3中的異常解決

異常一:     Invalid character found in method name. HTTP method names must be token 原因:    產生這個問題的原因是頁面表單提交了大量的資料,而這些資料量可能超過了Tomcat 定

手機7.0以上華7.0上popwindow位置顯示錯亂,飄

由於測試手機上華為meta8,升級了7.0以後突然popwindows顯示位置往上飄了, 其他機型沒啥問題,一直沒找到原因?後來看到一個連線? 原來是 in showAtLocation failed to no gravity 在7.0上沒有工作 解決

Python Version 2.7 required which was not found in the registry 問題解決

 今天在安裝numpy時,出現了Python Version 2.7 required which was not found in the registry錯誤,解決方案如下。   Python的一些第三方庫只到登錄檔的HKEY_LOCAL_MACHINE\SO

Android升級7.0使得webview載入頁面空白頁

        前段時間,公司一哥們把他的手機拿給我看,問到公司的軟體載入進去是空白頁,等了好久也是空白。我也為是網路出現了問題,排查沒問題啊。看看是不是快取問題,又是清快取,又是解除安裝重灌。結果還是空白頁面。想了一下是不是

ubantu mysql5.7升級8.0

mysql升級到8.0步驟如下: 檢視當前軟體包的最新版本: sudo dpkg -l|grep mysql* 去mysq

Ubuntu 16.04升級4.7.0內核導致Compiz奔潰,問題:compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so

conf bsp alt get onf 桌面 支持 png style 由於硬件的驅動支持問題,升級4.7.0的內核主要是為了能使用Intel HD Graphics 630驅動,但是也出現了相關問題,比如Compiz的特效導致桌面上如果有多個相同程序啟動,然後再次點擊時

RPM升級CentOS 7.0內核

one -c bug scripts gin pts arc ofo 默認 將CentOS 7.0默認內核升級到kernel-3.10.0-693.5.2.el7,需要如下RPM包: kernel-3.10.0-693.5.2.el7.x8664.rpmdracut-033

Tensorflow 低版本程式碼自動升級1.0版本

TensorFlow 1.0 中的 API 有所變化,引數位置發現變化,造成在 TensorFlow 0.n 上執行的 TensorFlow 程式無法在 TensorFlow 1.0 上執行。 自動將程式碼移植到 1.0,有一個轉換工具。 GitHub工具包地址:https://github

高階查詢元件dynamicCondition升級v2.0.0版本(二)

新版本特性: 1.新增ops和allowDel屬性。 <ul id="dynamicCondition" style="display:none;"> <li field="DynamicCondition.id" title="id" edit="text" l

高階查詢元件dynamicCondition升級v2.0.0版本(一)

效果預覽: 1.省份和城市可以實現聯動效果。 2.可以自定義查詢條件編輯器。如下拉樹,單選按鈕組。 新版本特性: 1.新增ops和allowDel屬性 2.支援擴充套件編輯器。可以實現下拉框級聯,下拉樹,單選組等ui控制元件。 3.新增輔助介面:instance.getRowDiv

spring boot1.0升級2.0的問題

Spring Boot 1.0 升級到 2.0 的時候也遇到了一些問題,在修改的過程中記錄下來,今天整理一下分享出來,方便後續升級的朋友少踩一些坑。1、第一個問題:啟動類報錯Spring Boot 部署到 Tomcat 中去啟動時需要在啟動類新增SpringBootServl

centos7:升級python3.7.0

Python-3.7.0.tar.xz安裝包下載: https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz 安裝必要的依賴: $ sudo yum install -y gcc gcc-c++ zlib zli

jboss 5.1升級7.0以上依賴關係配置。

分兩步:1、配置全域性依賴: 在system-layers-base下新建一個專案的包:如appian,在該包下新建一個main包,裡面放第三方包和一個總的xml檔案(叫module.xml)。xml檔案內容如下(參考): <?xml version="1.0" en

cocos2dx2.0升級3.0一些常見變化紀錄

轉自:http://www.blogjava.net/dongbule/archive/2013/12/27/408140.html 最近接手專案從cocos2dx 2.0 升級為 3.0 ,至於為什麼要升級我也弄不清楚,只感覺3.0是要擺脫cocos2d-iphone的身

7.0系統最簡單激活xposed框架的流程

mage 新版 搜索 了解 打勾 成功 ots 多功能 功能 對於喜歡搞機的哥們而言,很多時候會接觸到Xposed框架及其種類繁多功能無敵的模塊,對於5.0以下的系統版本,只要手機能獲得root權限,安裝和激活Xposed框架是異常簡易的,但隨著系統版本的不斷更新,5.0以

CDH5.12.0 如何升級到Spark2.0 版本

CDH5.12.0 spark2.0 CDH CDH5.12.0 如何升級到Spark2.0 版本

oracle版本升級11.2.0.3升級11.2.0.4

大致步驟:  1,核實資料庫和作業系統相關資訊  檢查升級條件 安裝12c資料庫軟體 執行dbua升級db或者採用手工執行命令的方式,但根據官方資料看,建議放棄這個想法,DBUA 真的簡化了很多,如果手工執行,會多很多步驟,這樣會增加出錯的概率。(這裡用的手工命令)

碩思閃客精靈6.0破解版(含7.0破解補丁)6.0/7.0/8.0/9.0版本

碩思閃客精靈6.0破解版(含7.0破解補丁)6.0/7.0/8.0/9.0版本,他可以幫助你把網上下載的FLASH進行反編。 碩思閃客精靈破解版下載 碩思閃客精靈註冊碼版下載 然後通過flash專業進行編輯,改成自己想要的畫面或者文字以及連結等。他能夠輕鬆反編譯一個或是多個SWF格式檔案為FLA/FLE

lanmp環境中php版本的升級7.1

chm lanmp 1.4 bsp php -v 設置權限 bubuko 沒有 ima 查看php版本的信息 vim ./lib/phps.sh 設置權限 chmod 755 ./lib/phps.sh 下載版本 ./lib/phps.sh 7.1.4 查看版