HTTP協議概要

簡介

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web)服務器傳輸超文本到本地瀏覽器的傳送協議。
HTTP是一個基於TCP/IP通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。
HTTP是一個屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統。它於1990年提出,通過幾年的使用與發展,獲得不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工做正在進行之中,並且HTTP-NG(Next Generation of HTTP)的建議已經提出。
HTTP協議工做於客戶端-服務端架構爲上。瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求。Web服務器根據接收到的請求後,向客戶端發送響應信息。
圖片描述瀏覽器

主要特色及做用

  • HTTP協議用於客戶端及服務器端之間的通訊緩存

  • 經過請求和響應的交換達成通訊服務器

  • HTTP協議是無狀態協議;即HTTP協議不對請求和響應之間的通訊狀態進行保存,對於發送過的請求和響應都不作持久化處理。架構

HTTP報文

用於HTTP協議交互的信息被稱爲HTTP報文。請求端(客戶端)的HTTP報文叫作請求報文,響應端(服務器)的叫作響應報文。HTTP報文自己是由多行數據組成的字符串文本。
兩種報文的結構以下:分佈式

請求報文

clipboard.png

clipboard.png

請求行包括:請求方法,請求URL,HTTP協議及版本。ide

響應報文

clipboard.png

clipboard.png

狀態行包括:HTTP協議及版本,代表響應結果的狀態碼,緣由短語(狀態描述)。spa

返回結果的HTTP狀態碼

狀態碼的職責是:當客戶端向服務器端發送請求時,描述返回的請求結果。藉助狀態碼,用戶能夠知道服務器端是正常處理了請求,仍是出現了錯誤。
狀態碼類別代理

狀態碼 類別 狀態碼描述
1xxx 信息狀態碼 接受的請求正在處理
2XXX 成功狀態碼 請求正常處理完畢
3XX 重定向狀態碼 須要進行附加操做以完成請求
4XX 客戶端錯誤狀態碼 服務器沒法處理請求
5XX 服務器錯誤狀態碼 服務器處理請求出錯

狀態碼一共約60種,經常使用的大概14種。對象

2xx 成功

2XX的響應結果代表請求被正常處理了。
200 OK
表示從客戶端發來的請求在服務器端被正常處理了。
204 No Content
表示服務器端接受的請求已成功處理,但在返回的響應報文中不包含實體的主體部分。圖片

206 Partial Content
表示客戶端對資源進行了範圍請求,而服務器成功執行了該請求。響應報文中包含由Content-Range指定範圍的實體內容。

3xx 重定向

3XX的響應結果代表瀏覽器須要執行某些特殊的處理以正確處理請求。
301 Moved Pemannently
永久性重定向。表示請求的資源已經被分配了新的URL,之後應使用資源如今所指的URL。
302 Found
臨時性重定向。表示請求的資源已經被分配新的URL,但願用戶能使用新的URL訪問。
與301狀態碼類似,但302表明資源不是永久移動,只是臨時性質的。
303 See Other
表示有對應的資源能夠在另外一個URL處找到,因此客戶端必須使用GET方法來獲取新位置的資源。
304 Not Modified
表示當客戶端發送附帶條件的請求時(請求報文中含有:If-Matach、If-Modified-Since、If-None-Match等任一首部字段),服務容許請求訪問資源,但因發生請求未知足條件的狀況後,直接返回304 Not Modified(此時服務器端資源未改變,可直接使用客戶端未過時的緩存)。
307 Temporary Redirect
臨時重定向。與302有相同含義,但不會從POST變爲GET。

4xx 客戶端錯誤

4XX的響應結果代表客戶端是發生錯誤的緣由所在。
400 Bad Request
表示請求報文中存在語法錯誤。發生錯誤時,需修改請求的內容後再次發送請求。
401 Unauthorized
表示發送的請求須要有經過HTTP認證的認證信息。若以前已進行過1次請求,則表示用戶認證失敗。
返回含有401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部用以質詢用戶信息。當瀏覽器初次接受到401,會彈出認證用的對話窗口。
403 Forbidden
代表客戶端對請求資源的訪問被服務器拒絕了。
未得到文件系統訪問受權,訪問權限出現問題等狀況均可能是發生403的緣由。
404 Not Found
代表服務器上沒法找到請求的資源。常見緣由,輸錯了URL地址。

5XX 服務器錯誤

5XX的響應結果代表服務器自己發生錯誤。
500 Internal Server Error
代表服務器端在執行請求時發生了錯誤。也多是Web應用存在bug或某些臨時故障。
503 Service Unavailable
代表服務器暫時處於超負荷或正在進行停機維修,如今沒法處理請求。

告知服務器意圖的HTTP方法

方法一共約8種,分別爲:

方法 說明
GET 獲取資源
POST 傳輸實體主體
PUT 傳輸文件
DELETE 刪除文件
HEAD 得到報文首部
OPTIONS 詢問支持的方法
TRACE 追蹤路徑
CONNECT 要求用隧道協議鏈接代理

下面對使用最多的幾種方法進行介紹:

  • GET:獲取資源
    GET方法用來請求訪問已被URL識別的資源。指定的資源經服務器端解析後返回響應內容。GET用來從服務器獲取數據。

  • POST:傳輸實體主體
    雖然GET方法也能夠傳輸實體的主體,但通常不用GET方法進行傳輸,而用POST方法。POST方法用於向服務器傳送數據。

  • PUT:傳輸文件
    PUT方法用來傳輸文件。相似FTP協議的文件上傳。在請求報文的主體中包含文件內容,而後要求服務器保存到請求URL指定的位置。

  • DELETE:刪除文件
    與PUT方法相反,要求服務器刪除請求指定URL位置的資源。

  • HEAD方法:得到報文首部與GET方法同樣,可是不返回報文主體部分。僅返回指定URL有關的響應首部信心。用於確認URL有效性及資源更新的日期時間等。

相關文章
相關標籤/搜索