簡介
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 協議 請求 響應 狀態
文章來源: