【傳輸協議】http協議GET與POST傳遞資料的最大長度能夠達到多少

Love Lenka發表於2018-04-18

各種web開發語言中,各個頁面之間基本都會進行資料的傳遞,web開發裡面比較常用的資料傳遞方式有get post,一直以來我都只知道get傳遞的資料量要比post傳遞的資料量要少,所以傳遞大資料量還是要用post,但是 get post 這兩種方式最大能傳遞多少資料呢?一直沒搞清楚。

今天由於工作的需要,還必須得把這個問題搞明白一下了,下面就說說GET與POST傳遞資料的最大長度能夠達到多少吧。

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這個值。這就很明白的說明了這個問題了

相關文章