HTTP報(bào)文是面向文本的,報(bào)文中的每一個(gè)字段都是一些ASCII碼串,各個(gè)字段的長(zhǎng)度是不確定的。HTTP有兩類報(bào)文:請(qǐng)求報(bào)文和響應(yīng)報(bào)文。
請(qǐng)求報(bào)文
一個(gè)HTTP請(qǐng)求報(bào)文由請(qǐng)求行(request line)、請(qǐng)求頭部(header)、空行和請(qǐng)求數(shù)據(jù)4個(gè)部分組成,下圖給出了請(qǐng)求報(bào)文的一般格式。
(1)請(qǐng)求行
請(qǐng)求行由請(qǐng)求方法字段、URL字段和HTTP協(xié)議版本字段3個(gè)字段組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。
HTTP協(xié)議的請(qǐng)求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。這里介紹最常用的GET方法和POST方法。
GET:當(dāng)客戶端要從服務(wù)器中讀取文檔時(shí),使用GET方法。GET方法要求服務(wù)器將URL定位的資源放在響應(yīng)報(bào)文的數(shù)據(jù)部分,回送給客戶端。使用GET方法時(shí),請(qǐng)求參數(shù)和對(duì)應(yīng)的值附加在URL后面,利用一個(gè)問(wèn)號(hào)(“?”)代表URL的結(jié)尾與請(qǐng)求參數(shù)的開(kāi)始,傳遞參數(shù)長(zhǎng)度受限制。例如,/index.jsp?id=100&op=bind。
POST:當(dāng)客戶端給服務(wù)器提供信息較多時(shí)可以使用POST方法。POST方法將請(qǐng)求參數(shù)封裝在HTTP請(qǐng)求數(shù)據(jù)中,以名稱/值的形式出現(xiàn),可以傳輸大量數(shù)據(jù)。
(2)請(qǐng)求頭部
請(qǐng)求頭部由關(guān)鍵字/值對(duì)組成,每行一對(duì),關(guān)鍵字和值用英文冒號(hào)“:”分隔。請(qǐng)求頭部通知服務(wù)器有關(guān)于客戶端請(qǐng)求的信息,典型的請(qǐng)求頭有:
User-Agent:產(chǎn)生請(qǐng)求的瀏覽器類型。
Accept:客戶端可識(shí)別的內(nèi)容類型列表。
Host:請(qǐng)求的主機(jī)名,允許多個(gè)域名同處一個(gè)IP地址,即虛擬主機(jī)。
(3)空行
最后一個(gè)請(qǐng)求頭之后是一個(gè)空行,發(fā)送回車符和換行符,通知服務(wù)器以下不再有請(qǐng)求頭。
(4)請(qǐng)求數(shù)據(jù)
請(qǐng)求數(shù)據(jù)不在GET方法中使用,而是在POST方法中使用。POST方法適用于需要客戶填寫表單的場(chǎng)合。與請(qǐng)求數(shù)據(jù)相關(guān)的最常使用的請(qǐng)求頭是Content-Type和Content-Length。
聯(lián)系客服