POST與GET比較

原理的區別

GET、POST、PUT、DELETE是HTTP協議定義的與服務器交互的4種基本的方法,這4種方法對應着對URL(資源描述符)資源的查、改、增、刪操作。

一般在瀏覽器中輸入網址訪問資源是通過GET的方式,在FORM表單進行提交時,可以通過Method指定提交的方式(POST或GET),默認爲GET方式。

所以GET方法用於獲取/查詢資源信息,POST方法一般用於更新資源信息,這裏作進一步的說明:

1)GET用於信息獲取,而且是安全和冪等的
這裏所謂的安全是指該操作僅用於獲取信息而非修改信息;
冪等的意思是對同一個URL的多個請求應該返回同樣的結果。
例子:查看某個論壇或博客上的信息,使用GET方法

2)POST用於更新資源信息
例子:在論壇上發帖、評論等應該使用POST方法實現

表現形式的區別

1.提交方式不同
(1)GET方法提交,請求的數據會附在URL之後(即把數據放置在請求行中),以?分割URL和傳輸數據,多個參數用&連接。
例如 /mysite/login/?username=banana&password=123456
(2)POST方法提交是把提交的數據放置在HTTP包的包體中
使用POST數據username=banana&password=123456去請求網頁/mysite/login/。

因此,GET提交的數據會在地址欄中顯示出來,而POST提交,地址欄不會改變。

2.在傳輸數據的大小上的區別
雖然HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規範也沒有對URL的長度進行限制,但在實際開發中存在以下限制:
GET:特定瀏覽器和服務器對URL長度有限制,因此對於GET提交時,傳輸數據會受到URL長度的限制。
POST:這一方法是通過URL傳值,理論上數據不受限,但實際各個WEB服務器會規定對POST提交數據大小進行限制。

3.安全性上的區別
⚠️這裏的安全性是真正意義上的security。
POST安全級別要比GET高。
例如當需要請求一個需要登錄的用戶界面時,通過GET提交數據,用戶名和密碼將明文出現在URL上,登錄界面有可能被瀏覽器緩存、他人查看瀏覽器的歷史記錄,這些情況下,別人都能夠拿到用戶名和密碼。

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