成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

于一次簡單的get請求得知tomcat的一個小坑

darkbaby123 / 911人閱讀

摘要:一前言在接到需求后很快的做完了然后做本地測試發(fā)現(xiàn)因為是請求里面參數(shù)數(shù)據(jù)是查詢?nèi)嗣詳y帶中文,對此進行了問題分析。

一、前言

在接到需求后很快的做完了然后做本地測試發(fā)現(xiàn):

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

因為是get請求里面參數(shù)數(shù)據(jù)是查詢?nèi)嗣詳y帶中文,對此進行了問題分析。

二、分析過程

在當時我就立馬咨詢了百度老師,是因為Tomcat在某個版本里面升級了,對URL遵守RFC規(guī)范,對特殊字符不予以放行。
要解決問題有兩個方向:

1.解決編碼問題。
2.Tomcat降版本。

使用postman攜帶中文參數(shù)可以正常訪問到數(shù)據(jù),之前也沒有遇到過這樣的問題,因此java服務端是沒問題的,而且服務是使用springboot 1.5.3 ,對應的Tomcat版本是8.5.14,不考慮打成war包部署就打算從編碼入手了。

其實問題說起來還是挺簡單的。。但是因為服務設計的框架所以走錯了路子。。。想記錄一下分析的過程。

從前端那里攜帶中文參數(shù)訪問Tomcat,在Tomcat的訪問日志里,看到了攜帶中文參數(shù)的請求是這樣的:

[18/Jun/2019:19:51:18 +0800] 0:0:0:0:0:0:0:1 "GET null null" 400 (0 ms)

請求都沒進來就被過濾掉了。

我在js里面對參數(shù)進行了編碼

window.location.href="?p=ware&d=ware-register-query&agentName="+encodeURI($(".agent").val());

在這里對參數(shù)進行了編碼 ,發(fā)現(xiàn)并沒有用。百思不得其解。

其實因為我們是 html+php+java架構的,請求是經(jīng)過php處理后再發(fā)送到java后臺的,在js中編碼過的參數(shù),發(fā)送到php處理的時候,會自動解碼:

var_dump(check_merchant_query."?agentName=".$_GET["agentName"]); // 打印拼接的url
$req = new httpRequest("get",check_merchant_query."?agentName=".$_GET["agentName"],null,function($result){return $result;});

這里打印出來的結果是已經(jīng)解碼過的,當時沒注意到,只是覺得這個url沒錯,因此多花了許多時間。。
以為在PHP里面構造的http請求的get參數(shù)是已經(jīng)編碼過的,所以我將接下來的時間都放在了如何設置tomcat對特殊字符放行上。。

如果是正常的html+java,那么上面的編碼就是沒問題的,只是分析的時候忘記了還要經(jīng)過php處理。。

最后在Php中對參數(shù)進行編碼就可以啦

$req = new httpRequest("get",check_merchant_query."?agentName=".urlencode($_GET["agentName"]),null,function($result){return $result;});

至于postman為什么能夠輸入中文參數(shù)就能夠直接訪問tomcat呢?是因為postman就相當于一個瀏覽器,在發(fā)送請求的時候已經(jīng)對參數(shù)進行了編碼操作啦

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/31740.html

相關文章

  • 一次簡單get請求得知tomcat一個小坑

    摘要:一前言在接到需求后很快的做完了然后做本地測試發(fā)現(xiàn)因為是請求里面參數(shù)數(shù)據(jù)是查詢?nèi)嗣詳y帶中文,對此進行了問題分析。 一、前言 在接到需求后很快的做完了然后做本地測試發(fā)現(xiàn): java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are ...

    jone5679 評論0 收藏0
  • http相關面試題

    摘要:狀態(tài)碼有那些分別代表是什么意思簡單版繼續(xù),一般在發(fā)送請求時,已發(fā)送了之后服務端將返回此信息,表示確認,之后發(fā)送具體參數(shù)信息正常返回信息請求成功并且服務器創(chuàng)建了新的資源服務器已接受請求,但尚未處理請求的網(wǎng)頁已永久移動到新位置。 http狀態(tài)碼有那些?分別代表是什么意思? 簡單版 [ 100 Continue 繼續(xù),一般在發(fā)送post請求時,已發(fā)送了http header之后...

    沈建明 評論0 收藏0
  • tomcat設置默認路徑致使項目url沖突解決方法

    摘要:前言作為容器非常出色但是依然會有一些避之不及的小坑在此記錄一筆問題部署多個項目后路徑?jīng)_突情景描述下有兩個項目兩個項目除開管理信息接口其余都有安全驗證機制由于未做前后端分離因此靜態(tài)資源也存在項目中在做靜態(tài)資源中的接口請求時未寫包名比如登錄代碼 前言 tomcat作為java容器非常出色,但是依然會有一些避之不及的小坑,在此記錄一筆. START 問題 部署多個項目后url路徑?jīng)_突 情景...

    zhigoo 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<