1. 程式人生 > >http報文詳解

http報文詳解

資源推薦

1.HTTP權威指南。

HTTP權威指南》由古爾利所著,《HTTP權威指南》詳細解釋了HTTP協議,包括HTTP是如何工作的,如何用HTTP來開發基於Web的應用程式,核心的因特網協議如何與架構構建塊互動,如何正確實現因特網客戶和伺服器等。

這個pdf高清無碼的(非掃描版),是我在網上購買的,特來分享。連線如下:

2.網路基礎系列部落格。

報文流

·HTTP 報文是在HTTP 應用程式之間傳送的資料塊。這些資料塊以一些文字形式的元資訊(meta-information)開頭,這些資訊描述了報文的內容及含義,後面跟著可選的資料部分。這些報文在客戶端、伺服器和代理之間流動。

·HTTP 使用術語流入(inbound)和流出(outbound)來描述事務處理(transaction)的方向

·不管是請求報文還是響應報文,所有報文都會向下遊(downstream流動

報文組成

HTTP 報文的三個部分

 

·起始行

報文的第一行就是起始行,在請求報文中用來說明要做些什麼,在響應報文中說明出現了什麼情況。

·首部欄位

起始行後面有零個或多個首部欄位。每個首部欄位都包含一個名字和一個值,為了便於解析,兩者之間用冒號(:)來分隔。首部以一個空行結束。新增一個首部欄位和新增新行一樣簡單。

·主體

空行之後就是可選的報文主體了,其中包含了所有型別的資料。請求主體中包括

了要傳送給Web 伺服器的資料;響應主體中裝載了要返回給客戶端的資料。起始行和首部都是文字形式且都是結構化的,而主體則不同,主體中可以包含任意的二進位制資料(比如圖片、視訊、音軌、軟體程式)。當然,主體中也可以包含文字。

MIME 型別是一種文字標記,表示一種主要的物件型別和一個特定的子型別,中間由一條斜槓來分隔。

HTML 格式的文字文件由 text/html 型別來標記。

普通的 ASCII 文字文件由 text/plain 型別來標記。

JPEG 格式的圖片為 image/jpeg 型別。

GIF 格式的圖片為 image/gif 型別。

Apple QuickTime

電影為 video/quicktime 型別。

微軟的 PowerPoint 演示檔案為 application/vnd.ms-powerpoint 型別。

常見的MIME 型別有數百個,實驗性或用途有限的MIME 型別則更多。

 image

報文的語法

·這是請求報文的格式:

<method> <request-URL> <version>

<headers>

<entity-body>

·這是響應報文的格式(注意,只有起始行的語法有所不同):

<version> <status> <reason-phrase>

<headers>

<entity-body>

起始行(start line

a.請求行

請求報文請求伺服器對資源進行一些操作。請求報文的起始行,或稱為請求行,包含了一個方法和一個請求URL,這個方法描述了伺服器應該執行的操作,請求URL描述了要對哪個資源執行這個方法。請求行中還包含HTTP 的版本,用來告知伺服器,客戶端使用的是哪種HTTP。所有這些欄位都由空格符分隔。

例如:POST /infoNewsAction_uploadxheditorfile.action?immediate=1 HTTP/1.1

b.響應行

響應報文承載了狀態資訊和操作產生的所有結果資料,將其返回給客戶端。響應報文的起始行,或稱為響應行,包含了響應報文使用的HTTP 版本數字狀態碼,以及描述操作狀態的文字形式的原因短語。 所有這些欄位都由空格符進行分隔。

例如:HTTP/1.1 200 OK

首部(header

1.每個HTTP 首部都有一種簡單的語法:名字後面跟著冒號(:),然後跟上可選的空格,再跟上欄位值,最後是一個CRLF(或者換行符)

常見的首部例項

首部例項

描述

Date:Tue,3Oct 1997 02:16:03 GMT

伺服器產生響應的日期

Content-length:15040

實體的主體部分包含了15 040 位元組的資料

Content-type:image/gif

實體的主體部分是一個GIF 圖片

Accept: image/gif, image/jpeg, text/html

客戶端可以接收GIF 圖片和JPEG 圖片以及HTML

2. 首部延續行

將長的首部行分為多行可以提高可讀性,多出來的每行前面至少要有一個空格或制表符(tab)。

HTTP/1.0 200 OK

Content-Type: image/gif

Content-Length: 8572

Server: Test Server

Version 1.0

image

通用首部

這些是客戶端和伺服器都可以使用的通用首部。可以在客戶端、伺服器和其他應

用程式之間提供一些非常有用的通用功能。比如,Date 首部就是一個通用首部,

每一端都可以用它來說明構建報文的時間和日期:

Date: Tue, 3 Oct 1974 02:16:00 GMT

請求首部

從名字中就可以看出,請求首部是請求報文特有的。它們為伺服器提供了一些額

外資訊,比如客戶端希望接收什麼型別的資料。例如,下面的Accept 首部就用

來告知伺服器客戶端會接受與其請求相符的任意媒體型別:

Accept: */*

Accept首部

首  部

描  述

Accept

告訴伺服器能夠傳送哪些媒體型別

Accept-Charset

告訴伺服器能夠傳送哪些字符集

Accept-Encoding

告訴伺服器能夠傳送哪些編碼方式

Accept-Language

告訴伺服器能夠傳送哪些語言

TE11

告訴伺服器可以使用哪些擴充套件傳輸編碼

安全請求首部