2 回答

TA貢獻1827條經驗 獲得超9個贊
get 是通過URL提交數據,因此GET可提交的數據量就跟URL所能達到的最大長度有直接關系。很多文章都說GET方式提交的數據最多只能是1024字節,而實際上,URL不存在參數上限的問題,HTTP協議規范也沒有對URL長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制。IE對URL長度的限制是2083字節(2K+35字節)。對于其他瀏覽器,如FireFox,Netscape等,則沒有長度限制,這個時候其限制取決于服務器的操作系統。即如果url太長,服務器可能會因為安全方面的設置從而拒絕請求或者發生不完整的數據請求。
post 理論上講是沒有大小限制的,HTTP協議規范也沒有進行大小限制,但實際上post所能傳遞的數據量大小取決于服務器的設置和內存大小。因為我們一般post的數據量很少超過MB的,所以我們很少能感覺的到post的數據量限制,但實際中如果你上傳文件的過程中可能會發現這樣一個問題,即上傳個頭比較大的文件到服務器時候,可能上傳不上去,以php語言來說,查原因的時候你也許會看到有說PHP上傳文件涉及到的參數PHP默認的上傳有限定,一般這個值是2MB,更改這個值需要更改php.conf的post_max_size這個值。這就很明白的說明了這個問題了。

TA貢獻2036條經驗 獲得超8個贊
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配置文檔。
- 2 回答
- 0 關注
- 851 瀏覽
添加回答
舉報