眾所周知,傳遞小量參數(在沒有其他原因,例如隱藏參數值的情況下)推薦使用GET方法,傳遞大量參數推薦使用POST方法。原因是什么呢?
原因是傳說GET方法是通過URL來傳遞,而URL的長度是受限的,而POST方法采用流的方式,理論上可以傳遞的容量是沒有限制的。
現在來看這個描述:“URL的長度是受限的”,但HTTP協議規范也沒有對URL長度進行限制,具體是在哪里受限制呢?browser端還是server端呢?
網上現在google出來的結果都是說url的長度實際上是受到browser的限制,如IE限定url長度為2083字節,opera 是4050, Netscape 是8192,等等。既然是browser對URL長度的限制,那么不管是GET方法還是POST方法都存在這個限制。注意這個限制是整個URL長度,而不僅僅是你的參數值數據長度。那么對於server端,實驗表明Server端對於URL的長度也是有限制的。
結論:
1)了解應用程序所在的環境,如Web應用的瀏覽器、服務器環境,了解其特定的參數限制情況。
2)提交復雜數據盡量使用POST方法。注意FORM表單不寫method屬性時默認是使用GET方法的。
參考資料:
http://www.jb51.net/article/18858.htm
http://npsajax.iteye.com/blog/200051