頁面提交後提示“連線被重置”或“載入頁面時到伺服器的連線被重置”的問題分析
平臺:windows7+JDK1.6+tomcat 5.0.28
框架:structs+java+jsp
在某jsp頁面中文字框錄入內容後,點選提交按鈕,有時會出現“載入頁面時到伺服器的連線被重置”頁面,由於還沒進入到action檔案就跳到錯誤頁面,所以排除是java程式碼的問題。仔細分析了現象,發現錄入框中的文字大於一定數值時才會報錯,大約是812個漢字左右。又檢查了一下jsp程式碼,其中有這麼一段
var url = "<%=path%>/workflow.do?action=initEventCommit&eventId=" + eventId + "&type=" + type + "&tipId=" + tipId + "&handleResult=" + handleResult; url = encodeURI(url); //alert(url);//這句是我後來除錯時加的 window.open(url, 'main');
alert出來的url很長,大約3K,懷疑是瀏覽器url提交串長度過長,上網查了一下發現各瀏覽器url提交長度限制不一樣。
下面是幾種常見瀏覽器的url長度限制:(單位:字元)
IE : 2803 Firefox:65536 Chrome:8182 Safari:80000 Opera:190000 換了firefox瀏覽器測試,問題仍然重現。後來又發現url提交長度跟伺服器也有關係,tomcat的引數為maxHttpHeaderSize,可在server.xml中設定。(參考http://hi.baidu.com/hexiaojian/item/39089c35406d98483075a1e8) 於是設定此引數為8192,問題排除。