把Apache2.2與Tomcat6進行整合之后,當提交帶有中文參數的請求時,經常出現奇怪的現象。在直接訪問Tomcat時,可以正常返回結果的請求,一旦經過Apache的代理,就出現問題。

通過Debug發現,Tomcat在經過和不經過Apache代理的兩種情況下,得到的中文參數是不同的,而后者是亂碼。

從網上查了一下資料,發現Apache在使用AJP13模式代理到Tomcat時,也應該為Tomcat的AJP13設定一些參數。

具體說來,應該在Tomcat的server.xml中設置為:


<Connector port="8085" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
               
<!-- 防止中文亂碼 -->
               useBodyEncodingForURI
="true" URIEncoding="UTF8" />
               
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
                            
<!-- 防止中文亂碼 -->
                            useBodyEncodingForURI
="true" URIEncoding="UTF8" />