ページのコミット後に「接続がリセットされた」または「ページのロード時にサーバへの接続がリセットされた」というプロンプトが表示される問題の分析

1201 ワード

プラットフォーム:windows 7+JDK 1.6+tomcat 5.0.28
フレームワーク:structs+java+jsp
あるjspページにテキストボックスにコンテンツを入力した後、コミットボタンをクリックすると、「ページを読み込むときにサーバへの接続がリセットされる」ページが表示されることがありますが、actionファイルに入っていないうちにエラーページにジャンプするためjavaコードの問題は排除されます.現象をよく分析すると、入力ボックスの文字が一定の数値より大きい場合にエラーが発生し、812文字程度であることがわかりました.またjspコードをチェックしましたが、このようなセグメントがあります.
var url = "/workflow.do?action=initEventCommit&eventId=" + eventId + "&type=" + type +  "&tipId=" + tipId + "&handleResult=" + handleResult;
url = encodeURI(url);
//alert(url);//           
window.open(url, 'main');

alertから出てくるurlは長くて、約3 Kで、ブラウザurlのコミット列の長さが長すぎるのではないかと疑って、インターネットで調べてみると、各ブラウザurlのコミット長の制限が異なることがわかりました.
一般的なブラウザのurl長の制限はいくつかあります:(単位:文字)
IE : 2803
Firefox:65536
Chrome:8182
Safari:80000
Opera:190000
getリクエストの場合、urlの長さ制限範囲内で、リクエストのパラメータ個数に制限はありません.(次から抜粋)http://www.php100.com/html/itnews/it/2012/1216/11778.html )
 
firefoxブラウザのテストを交換しても、問題は再現されます.その後urlのコミット長さはサーバにも関係していることが分かった.tomcatのパラメータはmaxHttpHeaderSizeで、server.xmlで設定します.(参考)http://hi.baidu.com/hexiaojian/item/39089c35406d98483075a1e8)
 
そこで、このパラメータを8192に設定し、問題を除外します.