談談HTTP那點事

今天看到一個問題問 談談HTTP中的GET和POST區別
我看了下有人回答的答案 感受都理解錯了
HTTP
按照百度百科的解釋 HTTP是一個超文本傳輸協議 是互聯網上應用最普遍的一種網絡協議
是基於TCP/IP協議的應用層協議瀏覽器

HTTP歷史緩存

1.HTTP/0.9
1991年發佈0.9版本 0.9版本只有一個get
TCP握手後 客戶端向服務器請求網頁 服務器只能返回HTML格式字符串 服務器發送完畢 握手斷開bash

2.HTTP/1.0
1996年發佈1.0版本 除了get 還有post命令
TCP握手後 每次的請求都要包括HTTP header 和用來描述的元數據
還添加了狀態碼 緩存等服務器

```
HTTP/1.0 200 OK 
Content-Type: text/plain
Content-Encoding: gzip
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
```
>能夠看到服務器那邊返回的信息
 Content-Type 字段是服務器迴應時候告訴客戶端數據格式
 Content-Encoding 字段是說明數據是那種壓縮方法

**1.0缺點**
HTTP/1.0版本有一個問題就是每一個TCP的握手只能發送一個ok後就要關閉 這樣就是要每次請求到要創建握手 消耗服務器
**1.0解決**
爲了解決每次的請求到握手一次  有些瀏覽器在請求時候 用了一個非標準的Connection 字段
Connection:keep-alive  這個請求字段表示服務器不要關閉TCP連接 知道客戶端或者服務器主動關閉連接複製代碼

3.HTTP/1.1
1997年 發佈1.1版本 是如今比較流行的版本網絡

1.1版本變化是解決1.0上面的問題 持久鏈接 TCP鏈接默認不關閉 能夠被多個請求複用 不用像1.0那樣聲明一個Connection:keep-alive
客戶端和服務對方一段時間沒有活動 就能夠主動關閉連接 不過 規範就是客戶端在最後一個請求時候 發送 Connection:close 明確要求服務關閉TCP連接
目前對於同一個域名 大多數瀏覽器容許同時創建6個持久鏈接post

其餘功能url

添加了一個除get post 之外的put deletespa

以上已經瞭解了HTTP歷史
下面說下題目get post區別
HTTP底層是基於TCP/IP 因此說GET POST也是基於TCP/IP 也說以說GET POST 能夠幹一樣的事情code

get post只是說HTTP設定的一種類別 來區分數據請求的一種方式 本質上(TCP/IP)是沒有區別的 都是在傳輸數據 只是說這樣設置這種類型 能夠方便好的區分當前數據是某種 好比get攜帶body體 post寫在url中 這也是能夠的ip

get post 都是去服務器那邊請求一個資源 語義上來講明get是從服務器那邊拿數據 post是更新數據
本質上沒有差異都是TCP連接

可是也有個區別

  1. get方式請求 瀏覽器會把header data一塊發送 等待服務器狀態碼200響應
  2. post 瀏覽器會先發送header 服務器響應100 continue 瀏覽器在發送data 等待服務器200響應
相關文章
相關標籤/搜索