get和post請求的區別


http請求中get和post的區別

面試經常被問到

了解歷史

get和post是HTTP與服務器交互的方式,說到方式,其實總共有四種:put,delete,post,get。他們的作用分別是對服務器資源的增,刪,改,查。所以,get是獲取數據,post是修改數據。
但是,現在大家都不這么干了!只用一個方式就可以做增刪查減的操作。


區別分析

  • 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效率高!。


10月14號更新:
以上是之前整理到的關於get和post請求的區別,但實際上這些都是表面的理解(當時的自己還是太才疏學淺)
1 首先從安全性講,get和post都一樣,沒啥所謂的哪個更安全
get請求參數在url地址上,直接暴露,post請求的參數放body部分,按F12也直接暴露了,所以沒啥安全性可言
2 “GET參數通過URL傳遞,POST放在Request body中”這個其實也不准,post請求也可以沒body,也可以在url傳遞
3 GET和POST有一個重大區別,簡單的說:
GET產生一個TCP數據包;POST產生兩個TCP數據包。
長的說:
對於GET方式的請求,瀏覽器會把http header和data一並發送出去,服務器響應200(返回數據);
而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)
關於get和post區別可以參考get和post兩個基本方法的區別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM