把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" />