GET與POST可傳遞的最大值到底是多少?


GET與POST可傳遞的最大值到底是多少?
前日,看到這個問題了。 沒有深入了解。我的常識里面get最大傳遞的值為256b,post 是2M。這是很久以前不知在哪看到的。
於是又百度一下。看到兩篇文章裝過來看看:


淺談 HTTP中Get與Post的區別
GET方式傳值的最大長度
都有些道理。引用其中一些觀點:

get
首先是"GET方式提交的數據最多只能是1024字節",因為GET是通過URL提交數據,那么GET可提交的數據量就跟URL的長度有直接關系 了。而實際上,URL不存在參數上限的問題,HTTP協議規范沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制。IE對URL長度的限制是2083字節(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於操作系統的支持。   注意這是限制是整個URL長度,而不僅僅是你的參數值數據長度。

【get方式提交數據的大小,http協議並沒有硬性限制;而是與瀏覽器及服務器、操作系統有關。第二篇文章里,就有談到用apache測試,使用get方式,url最長可達8167b。其中跟帖留言中還有談到代理的因素在里面,可能url太長還沒到服務,就已經被代理拒絕掉了。第一篇的留言討論很能學到東西哦~ 】

post
理論上講,POST是沒有大小限制的,HTTP協議規范也沒有進行大小限制,說“POST數據量存在 80K/100K的大小限制”是不准確的,POST數據是沒有限制的,起限制作用的是服務器的處理程序的處理能力。
  對於ASP程序,Request對象處理每個表單域時存在100K的數據長度限制。但如果使用Request.BinaryRead則沒有這個 限制。

  由這個延伸出去,對於IIS 6.0,微軟出於安全考慮,加大了限制。我們還需要注意:

     1).IIS 6.0默認ASP POST數據量最大為200KB,每個表單域限制是100KB。
2).IIS 6.0默認上傳文件的最大大小是4MB。
3).IIS 6.0默認最大請求頭是16KB。
IIS 6.0之前沒有這些限制。[見參考資料5]

  所以上面的80K,100K可能只是默認值而已(注:關於IIS4和IIS5的參數,我還沒有確認),但肯定是可以自己設置的。由於每個版本的 IIS對這些參數的默認值都不一樣,具體請參考相關的IIS配置文檔。

【post方式,傳送數據最大理論上沒有限制,取決於服務器設置和內存大小。】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM