HTTP中的GET POST方法

2021-09-25 07:41:34 字數 1537 閱讀 3977

超文字傳輸協議(http)的設計目的是保證客戶端與伺服器之間的通訊。

http 的工作方式是客戶端與伺服器之間的請求-應答協議。

在客戶機和伺服器之間進行請求-響應時,兩種最常被用到的方法是:get 和 post。

get-從指定的資源請求資料。用於請求伺服器傳送某個資源。(查詢)

post-向指定的資源提交要被處理的資料。用於向伺服器提交資料,比如完成表單資料的提交,將資料提交給伺服器處理。(修改)

get請求的資料會附在url之後(就是把資料放置在http協議頭中),以?分割url和傳輸資料,引數之間以&相連,如:

login.action?name=admin&password=123456&verify=%e4%bd%a0%e5%a5%bd
如果資料是英文本母或數字,則原樣傳送;如果是空格,轉換為+;如果是中文或其他字元,則直接把字串用base64加密,得出如:%e4%bd%a0%e5%a5%bd,其中%xx中的xx為該符號以16進製表示的ascii碼值。

使用get方法時,瀏覽器會快取你的位址等資訊,留下歷史記錄和cookie

get是安全(安全僅僅指非修改資訊)的。僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改和增加資料,不會影響資源的狀態。

get是冪等的。冪等是指對同乙個url的多個請求應該返回同樣的結果。

post 是將表單中的資料放在 form 的資料體中,按照變數和值相對應的方式,傳遞到 action 所指向 url。

post請求方式是既不冪等又不安全,首先post請求方式往資料庫中提交資料的,因此會改變資料庫中的資料。其次,post請求方式每次獲得的結果都有可能不一樣,因為post請求是作用在上一級的url上的,則每一次請求都會新增乙份新資源(這也是post和put方式的最大區別,put方式是冪等的)。

如果乙個方法重複執行多次,產生的效果是一樣的,那就是idempotent的。在http中,put被定義為idempotent的方法,post則不是。

乙個部落格系統提供乙個web api,模式是 http://superblogging/blogs/post/ 。很簡單,將替換為我們的blog名字,往這個uri傳送乙個http put或者post請求,http的body部分就是博文,這是乙個很簡單的rest api例子。我們應該用put方法還是post方法?取決於這個rest服務的行為是否是idempotent的,假如我們傳送兩個http://superblogging/blogs/post/sample請求,伺服器端是什麼樣的行為?如果產生了兩個部落格帖子,那就說明這個服務不是idempotent的,因為多次使用產生了***;如果後乙個請求把第乙個請求覆蓋掉了,那這個服務就是idempotent的。前一種情況,應該使用post方法,後一種情況,應該使用put方法。

參考:

HTTP中GET,POST方法之區別

1.get是從伺服器上獲取資料,post是向伺服器傳送資料。2.get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,在url中可以 看到。post是通過http post機制,將表單內各個字段與其內容放置在html header內一起傳送到action屬性...

實習日誌 HTTP中的GET POST方法

超文字傳輸協議 http 的設計目的是保證客戶端與伺服器之間的通訊。http 的工作方式是客戶端與伺服器之間的請求 應答協議。在客戶機和伺服器之間進行請求 響應時,兩種最常被用到的方法是 get 和 post。get 從指定的資源請求資料。用於請求伺服器傳送某個資源。查詢 post 向指定的資源提交...

HTTP請求方法 GET POST

http hyper text transfer protocol 超文字傳輸協議。是一種建立在tcp上的無狀態連線,整個基本的工作流程是客戶端傳送乙個http請求,說明客戶端想要訪問的資源和請求的動作,服務端收到請求之後,服務端開始處理請求,並根據請求做出相應的動作訪問伺服器資源,最後通過傳送ht...