官术网_书友最值得收藏!

1.2.2 HTTP請求和響應

1.HTTP請求

HTTP請求是由客戶端向服務器發送的相關數據,其可以分為4部分內容,即請求方法(Request Method)、請求網址(Request URL)、請求頭(Request Headers)和請求體(Request Body)。

1)請求方法

當在瀏覽器中輸入URL并按Enter鍵時,便會以某種請求方法發起一個HTTP請求,常用的請求方法如表1-1所示。

表1-1 常用的請求方法

2)請求網址

請求網址,即統一資源定位符URL,通過請求網址可以唯一確定所請求的資源。

URL通常由4部分組成,即協議、主機、端口和路徑,其一般的語法格式如下:

     protocol://hostname[:port]/path/[;parameters][?query]#fragment

其中,protocol表示協議;hostname表示主機名;port表示端口號;path表示路徑;parameters表示參數;query表示查詢;fragment表示信息片斷。

3)請求頭

由于HTTP是一種無狀態協議,所以需要在請求頭中添加相關的首部字段,使服務器明確客戶端的目的,其常用的首部字段包括Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、Cookie、Expect、From、Host、Proxy-Authorization、Referer和User-Agent等。

4)請求體

請求體的內容一般通過請求方法POST所提交的數據獲得。

2.HTTP響應

HTTP響應是由服務器返回客戶端的相關數據,其可以分為3部分內容,即響應狀態碼(Status Code)、響應頭(Response Headers)和響應體(Response Body)。

1)響應狀態碼

響應狀態碼如表1-2所示,共分為5種:1xx,表示臨時響應,并需要客戶端繼續執行操作;2xx,表示服務器成功處理了請求;3xx,表示重定向,需要進一步操作以完成請求;4xx,表示客戶端的請求可能出錯,影響了服務器的處理;5xx,表示服務器在嘗試處理客戶端的請求時發生了內部錯誤,而這些錯誤可能是服務器本身的錯誤,并不是客戶端的請求出錯。

表1-2 響應狀態碼

續表

續表

2)響應頭

響應頭包含了服務器對客戶端請求的應答信息,其常用的首部字段包括Age、Expires、ETag、Last-Modified、Location、Server、Set-Cookie、Transfer-Encoding和X-Content-Type-Options等。

3)響應體

根據所選擇資源的類型,服務器返回客戶端的相關數據全部在響應體中。正因為如此,在編寫網絡爬蟲時,主要通過響應體獲取網頁的源代碼或JSON數據,并可以進一步從中提取所需要的內容。

3.HTTP請求和響應的過程

下面通過訪問一個網站來具體了解HTTP請求和響應的過程。

首先打開Chrome瀏覽器,右擊并選擇“檢查”即可打開瀏覽器的開發者工具面板,然后在網址欄輸入URL“http://www.oldxia.com”并按Enter鍵,此時就可以看到該URL所對應的網站頁面了,而在這個過程中,瀏覽器向網站所在的服務器發送了一個請求,服務器接收到這個請求后進行相應處理,并返回響應的結果,包括HTML、圖片、聲頻或視頻等,最后瀏覽器再進行解析,這樣就可以將網頁的內容展現出來了。

單擊開發者工具面板中的Network選項,該選項由5部分組成,如圖1-1所示,一是Controls(控制器),用于控制Network選項的外觀和功能;二是Filters(過濾器),用于控制Requests Table(請求列表)的具體顯示內容;三是Overview(概覽),用于顯示HTTP請求和響應的時間軸信息;四是Requests Table(請求列表),用于按資源獲取的先后順序顯示所有獲取的資源信息;五是Summary(概要),用于顯示總的請求數、數據傳輸量和加載時間等信息。

而Requests Table(請求列表)中的每條資源信息都表示進行了一次HTTP請求和響應。

下面再來詳細了解Requests Table(請求列表)中每列的具體含義,如表1-3所示。

圖1-1 Network選項

表1-3 Requests Table中列的含義

此時,單擊第1條資源www.oldxia.com,進而可以查看該資源的詳細情況,其由6部分組成,如圖1-2所示。

1)Headers

該部分表示資源的HTTP頭信息,其包含6部分內容,具體如下:

(1)General,該信息表示HTTP請求和響應過程中的基本信息,具體如表1-4所示。

表1-4 General

圖1-2 資源的詳細情況

(2)Response Headers,該信息表示響應頭,其常用的首部字段如表1-5所示。

表1-5 Response Headers中常用的首部字段

(3)Request Headers,該信息表示請求頭。請求頭是HTTP請求的重要組成部分,在編寫網絡爬蟲時,多數情況下需要設置請求頭,其常用的首部字段如表1-6所示。

表1-6 Request Headers中常用的首部字段

(4)Query String Parameters,該信息表示發起GET請求時所傳遞的參數。

(5)Form Data,該信息表示發起POST請求時所傳遞的參數。

(6)Request Payload,該信息表示發起POST請求時所傳遞的參數,數據格式為JSON。

這里需要注意的是,Form Data和Request Payload中的數據就是請求體(Request Body)。

2)Preview

根據所選擇資源的類型顯示相對應的預覽信息。

3)Response

根據所選擇資源的類型顯示相對應的響應內容。該響應內容就是響應體(Response Body),也是解析的目標。

4)Initiator

顯示請求的依賴關系,以及發出請求的原因。

5)Timing

顯示資源在整個請求生命周期中各部分所花費的時間。

6)Cookies

顯示所選擇資源請求和響應過程中存在的Cookie信息。

4.HTTP請求和響應過程中的Cookie

單擊開發者工具面板中的Application選項,然后單擊該選項左側Storage中的Cookies,即可查看客戶端中的Cookie,如圖1-3所示。

圖1-3 Application選項

表1-7中的每條信息表示1條Cookie,其所對應每列的具體含義如表1-7所示。

表1-7 Cookie中列的含義

主站蜘蛛池模板: 西贡区| 满洲里市| 土默特右旗| 山阴县| 余江县| 贵南县| 航空| 深泽县| 平谷区| 平乡县| 高阳县| 怀来县| 维西| 大厂| 棋牌| 枝江市| 当涂县| 辉县市| 余姚市| 大城县| 建水县| 光山县| 东乌珠穆沁旗| 靖安县| 宁德市| 平泉县| 泸西县| 长宁区| 沁水县| 衡山县| 民和| 白朗县| 涟源市| 静乐县| 婺源县| 陆川县| 琼海市| 满城县| 临海市| 海宁市| 靖安县|