2012年7月20日 星期五

測試IIS 的 URL 的 GET 模式可以傳多少變數內容

之前開發了一個功能, 是彈出新視窗來選取單位, 選取的部份是透過 javascript 的 opner 來存取, 長度上面不會有問題, 但接下來的分頁, 排序或匯出功能都是透過 URL 來傳遞, 企畫問我那不修改程式的情況下, 最多可以勾選多少個單位?


我的情況是每一個單位長度9碼,還會有一個逗號做間隔, 每一筆是總共占掉10個 bytes, 假設 deptID(單位代碼) 有 510筆, id 變數內容有 5100 bytes(510筆 x 10 bytes), 整個 queryString 因為還要加上 "id=" 的這3個 bytes, 所以是 5103 bytes.



程式碼, 增加到 511筆時:


就到 Web Server 的極限值了, deptID 的長度應該要到 5110 bytes 可是只拿到 5102 bytes, queryString 應該是 5113 bytes, 可是只拿到 5105 bytes.


結論: 以一個單位占9碼來說, 大約可以傳500筆的單位資料在 URL 裡.


附註: 不一樣的 Web Server 都會有落差, 有尤其是 Windows Server 2008 的 IIS 7, 預設值很小...



相關文章:
IIS6 遇到 URL 太長造成 Bad Request (Request Header Too Long)
http://maxtellyou.blogspot.tw/2012/06/iis6-url-bad-request-request-header-too.html


Error message when you visit a Web site that is hosted on a server that is running Internet Information Services 7.0: "HTTP Error 404.10 - REQUEST_HEADER_TOO_LONG"
http://support.microsoft.com/kb/942077/

沒有留言:

張貼留言

Facebook 留言板