淺析GET與POST

1、GET、POST

兩者是HTTP請求報文的方法,除此之外還有OPTION、HEAD、PUT、DELETE、TRACE、CONNECT。

GET:請求讀取由URL(統一資源定位符)所標誌的信息

POST:給服務器添加信息


1)根據HTTP規範,GET用於信息獲取,而且應該是安全的和冪等的。

(1)所謂安全的意味着該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢一樣,不會修改,增加數據,不會影響資源的狀態。

(2)冪等的意味着對同一URL的多個請求應該返回同樣的結果。


2)根據HTTP規範,POST表示可能修改變服務器上的資源的請求


2、區別與聯繫

1)GET請求的數據會附在URL之後(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,參數之間以&相連。

POST把提交的數據則放置在是HTTP包的包體中。


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

  注意這是限制是整個URL長度,而不僅僅是你的參數值數據長度。

理論上講,POST是沒有大小限制的,HTTP協議規範也沒有進行大小限制,起限制作用的是服務器的處理程序的處理能力。


3)獲取請求參數的方法不同,例如:在ASP中,服務端獲取GET請求參數用Request.QueryString,獲取POST請求參數用Request.Form。


4)POST的安全性要比GET的安全性高。比如:通過GET提交數據,用戶名和密碼將明文出現在URL上,因爲(1)登錄頁面有可能被瀏覽器緩存,(2)其他人查看瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了,除此之外,使用GET提交數據還可能會造成Cross-site request forgery***。


5)GET:查詢字符串顯示在地址欄的URL中,可見

POST:查詢字符串不會顯示在地址欄中,不可見


6)數據類型限制:

GET:只允許ASCII字符類型

POST:沒有限制。允許二進制數據


7)GET請求能夠被緩存,GET請求會保存在瀏覽器的瀏覽記錄中,以GET請求的URL能夠保存爲瀏覽器書籤

POST:POST請求不能被緩存下來,POST請求不會保存在瀏覽器瀏覽記錄中,以POST請求的URL無法保存爲瀏覽器書籤


8)點擊返回/刷新按鈕:

GET:沒有影響

POST:數據會重新發送(瀏覽器將會提示用戶“數據被從新提交”)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章