post和get的區別,面試經常被問到!(二)

瞭解歷史

get和post是HTTP與服務器交互的方式,
說到方式,其實總共有四種:put,delete,post,get。
他們的作用分別是對服務器資源的增,刪,改,查。
所以,get是獲取數據,post是修改數據。

但是,現在大家都不這麼幹了!只用一個方式就可以做增刪查減的操作。

區別分析

  1. get把請求的數據放在url上,即HTTP協議頭上,其格式爲: 以?分割URL和傳輸數據,參數之間以&相連。 數據如果是英文字母/數字,原樣發送, 如果是空格,轉換爲+, 如果是中文/其他字符,則直接把字符串用BASE64加密,及“%”加上“字符串的16進制ASCII碼”。 post把數據放在HTTP的包體內(requrest body)。 get提交的數據最大是2k(原則上url長度無限制,那麼get提交的數據也沒有限制咯?限制實際上取決於瀏覽器,(大多數)瀏覽器通常都會限制url長度在2K個字節,即使(大多數)服務器最多處理64K大小的url。也沒有卵用。)。 post理論上沒有限制。實際上IIS4中最大量爲80KB,IIS5中爲100KB。 GET產生一個TCP數據包,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據); POST產生兩個TCP數據包,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。 GET在瀏覽器回退時是無害的,POST會再次提交請求。 GET產生的URL地址可以被Bookmark,而POST不可以。 GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。 GET請求只能進行url編碼,而POST支持多種編碼方式。 GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。 GET只接受ASCII字符的參數的數據類型,而POST沒有限制 那麼,post那麼好爲什麼還用get?get效率高!。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章