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報文自己是由多行數據組成的字符串文本。
兩種報文的結構以下:分佈式
請求行包括:請求方法,請求URL,HTTP協議及版本。ide
狀態行包括:HTTP協議及版本,代表響應結果的狀態碼,緣由短語(狀態描述)。spa
狀態碼的職責是:當客戶端向服務器端發送請求時,描述返回的請求結果。藉助狀態碼,用戶能夠知道服務器端是正常處理了請求,仍是出現了錯誤。
狀態碼類別代理
狀態碼 | 類別 | 狀態碼描述 |
---|---|---|
1xxx | 信息狀態碼 | 接受的請求正在處理 |
2XXX | 成功狀態碼 | 請求正常處理完畢 |
3XX | 重定向狀態碼 | 須要進行附加操做以完成請求 |
4XX | 客戶端錯誤狀態碼 | 服務器沒法處理請求 |
5XX | 服務器錯誤狀態碼 | 服務器處理請求出錯 |
狀態碼一共約60種,經常使用的大概14種。對象
2XX的響應結果代表請求被正常處理了。
200 OK
表示從客戶端發來的請求在服務器端被正常處理了。
204 No Content
表示服務器端接受的請求已成功處理,但在返回的響應報文中不包含實體的主體部分。圖片
206 Partial Content
表示客戶端對資源進行了範圍請求,而服務器成功執行了該請求。響應報文中包含由Content-Range指定範圍的實體內容。
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的響應結果代表客戶端是發生錯誤的緣由所在。
400 Bad Request
表示請求報文中存在語法錯誤。發生錯誤時,需修改請求的內容後再次發送請求。
401 Unauthorized
表示發送的請求須要有經過HTTP認證的認證信息。若以前已進行過1次請求,則表示用戶認證失敗。
返回含有401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部用以質詢用戶信息。當瀏覽器初次接受到401,會彈出認證用的對話窗口。
403 Forbidden
代表客戶端對請求資源的訪問被服務器拒絕了。
未得到文件系統訪問受權,訪問權限出現問題等狀況均可能是發生403的緣由。
404 Not Found
代表服務器上沒法找到請求的資源。常見緣由,輸錯了URL地址。
5XX的響應結果代表服務器自己發生錯誤。
500 Internal Server Error
代表服務器端在執行請求時發生了錯誤。也多是Web應用存在bug或某些臨時故障。
503 Service Unavailable
代表服務器暫時處於超負荷或正在進行停機維修,如今沒法處理請求。
方法一共約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有效性及資源更新的日期時間等。