HTTP協議概要

分類:IT技術 時間:2017-07-09

簡介

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報文本身是由多行數據組成的字符串文本。
兩種報文的結構如下:

請求報文

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

響應報文

狀態行包括:HTTP協議及版本,表明響應結果的狀態碼,原因短語(狀態描述)。

返回結果的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有效性及資源更新的日期時間等。


Tags: 報文 HTTP 協議 請求 響應 狀態

文章來源:


ads
ads

相關文章
ads

相關文章

ad