Http學(xué)習(xí)
標(biāo)簽: http
Http請求與響應(yīng)
1.HTTP簡介
?? HTTP協(xié)議,全稱為Hyper Text Transfer Protocol,中文名為超文本傳輸協(xié)議,是互聯(lián)網(wǎng)中最常用的一種網(wǎng)絡(luò)協(xié)議。HTTP協(xié)議有很多應(yīng)用,最流行的就是用于web瀏覽器和web服務(wù)器之間的通信,即www應(yīng)用或稱web應(yīng)用。
?? WWW,全稱為World Wide Web,常稱為web。Http協(xié)議的WWW服務(wù)應(yīng)用的默認(rèn)端口為80,另外一個加密的WWW服務(wù)應(yīng)用https(s即secure)的默認(rèn)端口為443,主要用于網(wǎng)銀,支付等和金融相關(guān)的業(yè)務(wù)。
?? HTTP協(xié)議中最主要的是HTTP/1.0和HTTP/1.1,其中HTTP/1.0是第一個得到廣泛使用的版本,而1.1逐漸成為當(dāng)前使用的主流。HTTP協(xié)議工作于客戶端-服務(wù)端架構(gòu)為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務(wù)端即WEB服務(wù)器發(fā)送所有請求。Web服務(wù)器根據(jù)接收到的請求后,向客戶端發(fā)送響應(yīng)信息。

2.HTTP請求方法
?? 在HTTP通信中,每個HTTP請求報文都包含一個方法,用以告訴Web服務(wù)器端需要執(zhí)行哪些動作。
具體為:
| HTTP方法 | 作用描述 |
|---|---|
| GET | 請求指定的頁面信息,并返回實體主體。 |
| HEAD | 類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭 |
| POST | 向指定資源提交數(shù)據(jù)進(jìn)行處理請求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請求體中 |
| PUT | 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。 |
| DELETE | 請求服務(wù)器刪除指定的頁面。 |
| CONNECT | HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。 |
| OPTIONS | 允許客戶端查看服務(wù)器的性能。 |
| TRACE | 回顯服務(wù)器收到的請求,主要用于測試或診斷。 |
3.HTTP狀態(tài)碼
?? 當(dāng)瀏覽者訪問一個網(wǎng)頁時,瀏覽者的瀏覽器會向網(wǎng)頁所在服務(wù)器發(fā)出請求。當(dāng)瀏覽器接收并顯示網(wǎng)頁前,此網(wǎng)頁所在的服務(wù)器會返回一個包含HTTP狀態(tài)碼的信息頭(server header)用以響應(yīng)瀏覽器的請求。
HTTP狀態(tài)碼的英文為HTTP Status Code。
| 分類 | 分類描述 |
|---|---|
| 100-199 | 信息,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作 |
| 200-299 | 成功,操作被成功接收并處理 |
| 300-399 | 重定向,需要進(jìn)一步的操作以完成請求 |
| 400-499 | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
| 500-599 | 服務(wù)器錯誤,服務(wù)器在處理請求的過程中發(fā)生了錯誤 |
HTTP狀態(tài)碼共分為5種類型:
| 分類 | 分類描述 |
|---|---|
| 100-199 | 信息,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作 |
| 200-299 | 成功,操作被成功接收并處理 |
| 300-399 | 重定向,需要進(jìn)一步的操作以完成請求 |
| 400-499 | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
| 500-599 | 服務(wù)器錯誤,服務(wù)器在處理請求的過程中發(fā)生了錯誤 |
?? 下面是常見的HTTP狀態(tài)碼:
200 請求成功301 資源(網(wǎng)頁等)被永久轉(zhuǎn)移到其它URL404 請求的資源(網(wǎng)頁等)不存在500 內(nèi)部服務(wù)器錯誤
4.HTTP報文
?? HTTP報文分為兩種,一種是從Web客戶端發(fā)往Web服務(wù)器的HTTP報文,稱為請求報文,另外一種是從Web服務(wù)器發(fā)往客戶端的報文,稱為響應(yīng)報文。HTTP的請求和響應(yīng)報文格式類似。
1.HTTP請求報文
HTTP請求報文由請求行、請求頭部、空行和請求報文主體組成。
下圖給出了一般格式:

下面逐一闡述:
(1)?請求行
?? 請求行是請求報文的第一行,內(nèi)容由請求方法字段,URL字段和HTTP協(xié)議版本字段組成,之間用空格隔開。
(2)?請求頭部
?? 請求頭部由關(guān)鍵字/值對組成,每行一對,關(guān)鍵字和值用英文冒號 :分割,其作用是通過客戶端把請求的相關(guān)信息告訴給服務(wù)器。
常見的請求頭部信息如下表:
| 請求頭信息 | 說明 |
|---|---|
| Accept: text/plain, text/html | 媒體類型 |
| Accept-Charset: iso-8859-5 | 字符編碼集 |
| Accept-Language: zh-cn | 語言類型 |
| Accept-Encoding: gzip,deflate | 支持壓縮 |
| User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; ...) | 客戶端類型 |
| Host: www.xxx.xxx | 主機名 |
除此,與請求報文相關(guān)的常用的請求頭有Content-Type和Content-Length。
(3)?空行
?? 最后一個請求頭部信息之后是一個空行,通過發(fā)送回車符和換行符,通知Web服務(wù)器空行下面不會有請求頭部的信息了。
(4)?請求報文主體
?? 請求報文主體中包含了要發(fā)送給Web服務(wù)器的數(shù)據(jù)信息。
請求數(shù)據(jù)不在GET方法中使用,而在POST方法中使用。POST方法適用于需要客戶填寫表單的場合。
示例如下:
GET /index.html HTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Accept-Encoding:gzip,deflate
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Connection:Keep-Alive
Host:localhost
username=test&password=1234
2.HTTP響應(yīng)報文

響應(yīng)報文和請求報文類似。其中,響應(yīng)報文主體裝載了服務(wù)器端要返回給客戶端的數(shù)據(jù),可以是文本類型,也可以是二進(jìn)制的(圖片和視頻等)。
本文篇幅有限,僅介紹至此。
參考資料