http請求消息體和響應消息體


HTTP基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連接方式HTTP允許傳輸任意類型的數據對象HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。在客戶端發出HTTP請求並受到服務器端響應后,連接就會斷開,下次的訪問與前一次的訪問無關,因此如果需要維護客戶端的信息,必須在服務器端維持狀態數據。

一、HTTP URL的格式http://host[":"port][abs_path]

http表示要通過HTTP協議來定位網絡資源;

host表示合法的Internet主機域名或者IP地址;

port指定一個端口號,為空則使用缺省端口80

abs_path指定請求資源的URI(如下圖中的查詢字符串)

如果URL中沒有給出abs_path,那么當它作為請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。

wps_clip_image-6049

使用了默認端口80.

二、http請求由三部分組成,分別是:請求行、消息報頭、請求正文

請求行格式:Method Request-URI HTTP-Version CRLF

Method表示請求方法;

Request-URI是一個統一資源標識符;

HTTP-Version表示請求的HTTP協議版本;

CRLF表示回車和換行。

除了作為結尾的CRLF外,不允許出現單獨的CRLF字符

請求方法(所有方法全為大寫),各個方法的解釋如下:

GET 請求獲取Request-URI所標識的資源

POST Request-URI所標識的資源后附加新的數據

HEAD 請求獲取由Request-URI所標識的資源的響應消息報頭

PUT 請求服務器存儲一個資源,並用Request-URI作為其標識

DELETE 請求服務器刪除Request-URI所標識的資源

TRACE 請求服務器回送收到的請求信息,主要用於測試或診斷

CONNECT 保留將來使用

OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求

例子:

wps_clip_image-13337

上圖中的空行是CRLF(回車換行)

應用舉例:

GET方法:在瀏覽器的地址欄中輸入網址的方式訪問網頁時,瀏覽器采用GET方法向服務器獲取資源,eg:GET /form.html HTTP/1.1 (CRLF)

POST方法要求被請求服務器接受附在請求后面的數據,常用於提交表單。

egPOST /reg.jsp HTTP/ (CRLF)

Accept:image/gif,image/x-xbit,... (CRLF)

...

HOST:www.guet.edu.cn (CRLF)

Content-Length:22 (CRLF)

Connection:Keep-Alive (CRLF)

Cache-Control:no-cache (CRLF)

(CRLF) //CRLF表示消息報頭已經結束,在此之前為消息報頭

user=jeffrey&pwd=1234 //此行以下為提交的數據

HEAD方法與GET方法幾乎是一樣的,對於HEAD請求的回應部分來說,它的HTTP頭部中包含的信息與通過GET請求所得到的信息是相同的。利用這個方法,不必傳輸整個資源內容,就可以得到Request-URI所標識的資源的信息。該方法常用於測試超鏈接的有效性,是否可以訪問,以及最近是否更新。

GET方法通常沒有消息主體,支持最大1024個字節的查詢字符串,POST方法沒有限制。POST方法把查詢字符串放在消息主體中傳輸,因此比GET方法支持更多的數據類型。

三、HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文

狀態行格式:HTTP-Version  Status-Code  Reason-Phrase  CRLF

HTTP-Version表示服務器HTTP協議的版本;

Status-Code表示服務器發回的響應狀態代碼;

狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:

1xx:指示信息--表示請求已接收,繼續處理

2xx:成功--表示請求已被成功接收、理解、接受

3xx:重定向--要完成請求必須進行更進一步的操作

4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

5xx:服務器端錯誤--服務器未能實現合法的請求

Reason-Phrase表示狀態代碼的文本描述。

例子:

wps_clip_image-5021

上圖中的空行是CRLF(回車換行)

200 OK //客戶端請求成功

400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解

401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用

403 Forbidden //服務器收到請求,但是拒絕提供服務

404 Not Found //請求資源不存在,例如:輸入了錯誤的URL

500 Internal Server Error //服務器發生不可預期的錯誤

503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常

      原文:

wenku.baidu.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM