get和post的區別

GET和POST是什麼?HTTP協議中的兩種發送請求的方法。編程

HTTP的底層是TCP/IP。因此GET和POST的底層也是TCP/IP,也就是說,GET/POST都是TCP連接。GET和POST能作的事情是同樣同樣的。你要給GET加上request body,給POST帶上url參數,技術上是徹底行的通的。瀏覽器

HTTP的請求類型

HTTP協議其實是一種標準,規範,建議你們怎樣去作,也方便一些底層實現,就跟交通規則同樣,也就是說你不遵照也能夠,你也可使用其餘方法實現,這一點能夠看看參考連接5(評論也要看),下面說正題。緩存

客戶端對服務器的請求類型主要有四種:安全

  1. GET(從服務器獲取)
  2. POST(向服務器發送請求數據)
  3. PUT(更新)
  4. DELETE(刪除)

通常來說,分別對應着查、增、更、刪四種操做,不過實際上四種操做通常狀況下經過GET和POST就能夠完成了,因此平常使用最多的也都是這兩個。服務器

其餘的用的比較少的還有一些方法,如HEAD,CONNECT等,詳細的能夠去看看參考連接1.ide

POST和GET區別

  1. GET被瀏覽器強制支持(POST是可選的,不過通常都支持)
  2. GET是冪等的,POST非冪等
  3. GET能夠被瀏覽器緩存,POST不能夠
  4. GET請求是『安全』的,POST不安全
  5. POST相對來講比GET要『安全』一些
  6. 參數大小(理想和現實)

冪等

冪等(idempotent、idempotence)是一個數學與計算機學概念,常見於抽象代數中。
在編程中.一個冪等操做的特色是其任意屢次執行所產生的影響均與一次執行的影響相同。冪等函數,或冪等方法,是指可使用相同參數重複執行,並能得到相同結果的函數。這些函數不會影響系統狀態,也不用擔憂重複執行會對系統形成改變。函數

百度百科post

例如abs(-1)=abs(abs(-1)),這裏就是就是說每次GET獲得的數據是不變的。url

GET能夠被緩存

比方說經過GET請求了某個url,而後一些參數都明確的附在url後面了,查看瀏覽器歷史訪問的時候就能夠看見了,一些文件也在訪問的同時被緩存了,而通常POST的則不會。.net

注:RFC中POST請求也能夠被緩存,可是瀏覽器通常也不支持,就跟TCP/IP和OSI模型同樣,理想和現實的區別

GET相對『安全』

這裏的安全指的是GET不會改變服務器裏的數據,而POST則通常會更改數據

POST相對『安全』

這裏是說相對『安全』,url中會附帶GET請求的一些參數,而POST的在url中則看不到。

注:抓包都能看見,都是明文傳輸

參數

RFC中並無對請求的參數作大小限制,可是實際上瀏覽器對url的長度都有限制,通常對POST的數據大小也會作一些限制,因此也是標準和瀏覽器不一致的一個表現。

相關文章
相關標籤/搜索