第一次在掘金上寫東西,萌新表示如今瑟瑟發抖,哪裏說得不對還望各位大佬糾正┓( ´∀` )┏web
最直觀的就是語義上的區別瀏覽器
這個時候你首先得肯定是用什麼來定義安全(舉個栗子)緩存
- 你讓我爸爸媽媽叔叔阿姨去看這個url,你以爲安全嗎?
- 你讓一個初級測試工程師去測試這個接口,你以爲安全不?
- 你讓安全測試工程師去看看get請求呢? 因此人羣不一樣,安全的定義就不同
首先get和post在本質上都是tcp連接,但因爲http協議和瀏覽器或者服務器的限制,從而使它們在應用過程當中產生了差異,可是它們中還有一個較大的區別:get在請求時發送一個數據包,會將header和data一塊兒發送過去,而post會產生兩個數據包先發送header,服務器返回100,而後在發送data,服務器返回200安全
因此當你一層一層的把get和post剖析到底,你會發現他們的本質就是tcp鏈接,沒有啥區別,只是因爲http協議規定和瀏覽器或者服務器的限制,致使他們在應用過程當中體現形式不一樣。服務器
前段時間在看到有人在談論這個問題的時候有人扯出了RFC,那麼什麼是RFC呢。tcp
這樣說吧!RFC就是互聯網的規範,咱們一般所說的協議就是RFC的方式存在,http/1.1規範中RFC7231中涉及到了幾個http的方法,其中定義了幾個性質:工具
1.safe(安全)post
這裏的安全和一般所理解的安全意義不一樣,就比如若是一個請求的語義本質上就是獲取數據(只讀),那麼這個請求就是安全的。客戶端向服務器發起的請求若是沒有引發服務器端任何的狀態變化,那麼他就是安全的而post請求來提交數據必然會是服務器發生相應的變化。從這個維度來看,get請求相對服務器而言,是安全的,post則不安全的。測試
ldempotend(冪等)url
冪等通俗的來說就是指同一個請求執行屢次和僅執行一次的效果徹底相等。這裏來扯出冪等主要是爲了處理同一個請求重複發送的狀況,假如在請求響應以前失去鏈接,若是這個請求時冪等的,那麼就能夠放心的重發一次請求。因此能夠得出get請求時冪等的,能夠重複發送請求,post請求時不冪等的,重複請求可能會發生沒法預知的後果。
cacheable(可緩存性)
顧名思義,就是一個請求是否能夠被緩存,絕大多數部分,post都是不可緩存的(某些瀏覽器可能支持post緩存),但get是能夠緩存的。
勉強理解一下大概就是:
get是請求獲取指定資源,get方法時安全、冪等、可緩存的,get方法的報文主體沒有任何語義。
post是根據報文主體來對指定資源作出處理,post不安全,不冪等,不可緩存(大部分狀況下)。
好了,今天就先扯這麼多,有大佬發現不對請幫我糾正糾正,蟹蟹蟹蟹啦!先溜!