1. 程式人生 > >HTTP協議介紹

HTTP協議介紹

一.HTTP介紹

HTTP:超文字傳輸協議,是Web聯網的基礎

作用:從伺服器傳輸html到本地瀏覽器的傳輸協議

版本:HTTP 0.9/1.0/1.1

特點:無狀態,無連線,基於TCP

二.HTTP組成

1.請求報文:請求行+報文頭+空行 +報文體

(1)請求行:

①請求方法

GET

通常用於請求伺服器傳送某個資源

POST

用於向服務端提交資料,有主體

HEAD

請求一個資源,但是不需要伺服器傳送資源而僅傳回響應的首部資訊

PUT

向伺服器寫入文件;例如釋出系統

DELETE

請求刪除URL指向的資源

OPTIONS

用於查詢服務端支援的請求方法

TRACE

跟蹤請求資源傳輸所經過防火牆、代理或閘道器等

CONNECT

HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器

其他

LOCK;COPY;MOVE

GET與POST區別

  • get是從伺服器上獲取資料(get沒有請求正文),post是向伺服器傳送資料。
  • get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。
  • get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
  • get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程
  • 建議:

               1、get方式的安全性較Post方式要差些,包含機密資訊的話,建議用

                     Post資料提交方式;

               2、在做資料查詢時,建議用Get方式;而在做資料新增、修改或刪除

                     時,建議用Post方式;

②URL地址

URI:統一資源識別符號 (包括URL,URI)

URL:統一資源定位符

URN:統一資源名

格式:<協議>://<主機>:<埠>/<路徑>

③協議名稱或版本號

HTTP 0.9/1.0/1.1

(2)報文頭:HTTP報文頭包含若干屬性,格式“屬性名:屬性值”,服務端據此獲取客戶端的資訊

請求欄位:

Host:請求資源的主機和埠號

Accept:通過accept屬性告訴伺服器 客戶端可以接受什麼型別的響應。 如: Accept:text/plain

Accept-Charset:瀏覽器採用的是哪種編碼

Accept-Encoding:瀏覽器支援解碼的資料壓縮格式

Cookie:客戶端通過Cookie傳給服務端

Referer:表示這個請求是從哪個url過來的(上一個 頁面)

User-Agent:瀏覽器的具體型別

Cache-Control:對快取進行控制

connection:連線的管理

DATE:建立報文的日期時間

(3)報文體:向HTTP要傳輸的資料內容

2.響應報文:響應行+響應頭+空行+響應體

(1)響應行

①報文協議及版本

②狀態碼及狀態描述

狀態碼:

資訊性狀態碼:100~199

成功狀態碼:200~299

重定向狀態碼:300~399

客戶端錯誤狀態碼:400~499

服務端錯誤狀態碼:500~599

常見狀態碼:

200:客戶端請求成功

204:請求成功,但沒有資源返回

206:客戶端進行了範圍請求

301:臨時性重定向

302:永久性重定向

304:伺服器資源未改變,可直接使用未過期的快取

401:該狀態碼錶示需要通過HTTP認證

403:請求訪問的資源伺服器拒絕

404:伺服器沒有資源

500:伺服器內部錯誤

503:伺服器當前不能處理客戶端的請求

(2)響應頭:多個屬性組成

屬性:

server:伺服器所使用的Web伺服器名稱

Allow:通知客戶端能夠支援的HTTP方法

Content-Location:給出與報文主體部分相對於實際的URL

Location:引導使用者轉向與請求URL不同的資源301 302

ETag:代表響應服務端資源版本的報文頭屬性

Content-Type:響應正文的型別

Set-Cookie:服務端可以設定客戶端的Cookie

Cache-Control:對快取進行控制

connection:連線的管理

DATE:建立報文的日期時間

(3)響應體:http響應的資料內容

三.HTTP工作過程

(1)客戶端建立TCP連線

(2)傳送HTTP請求

(3)伺服器接受請求並返回HTTP響應

(4)客戶端釋放TCP連線

(5)客戶端瀏覽器解析HTML內容