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內容