HTTP服務及狀態碼

第一章 HTTP

1.1 HTTP協議的概念

HTTP協議,全稱HyperText Transfer Protocol,中文名爲超文本傳輸協議,是互聯網上經常使用的通訊協議之一,它有不少的應用。可是流行的就是用於Web瀏覽器和Web服務器之間的通訊,即WWW應用或稱爲Web應用。WWW全稱World Wilde Web,常稱爲Web,中文譯爲「萬維網」。它是目前互聯網上最受用戶歡迎的信息服務形式。html

注意:HTTP協議的WWW服務應用的默認端口爲80(端口的概念),另外的一個加密的WWW服務應用https的默認端口443linux

 

1.2 HTTP協議版本

HTTP協議從誕生到如今已經經歷了若干個版本,其中最主要的版本爲HTTP/1.0、HTTP/1.1。HTTP/1.0是第一個獲得普遍使用的版本,而HTTP/1.1爲當前使用主流版本。瀏覽器

1.2.1 HTTP/1.0簡介

HTTP/1.0是第一個獲得普遍使用的HTTP版本。規定了瀏覽器與服務器只保持短暫鏈接,瀏覽器的每次請求都須要服務器創建一個TCP鏈接,服務器完成請求處理後即斷開TCP鏈接,服務器不跟蹤每一個客戶也不記錄過去的請求(短鏈接)服務器

linux查看已經創建的鏈接網絡

 1 ss -lntup 2 3 ss -ant 工具

1.2.2 HTTP/1.1簡介

在鏈接方面,HTTP/1.1支持持久鏈接,在一個TCP鏈接上能夠傳送多個HTTP請求和相應,減小了創建和關閉鏈接的消耗和時間延遲,是當前互聯網主流的HTTP版本學習

 

1.3 HTTP報文

1.3.1 HTTP請求報文介紹

HTTP請求報文由請求行、請求頭部、空行和請求報文主體四部分組成網站

01.請求行加密

 請求行是請求報文的第一行,用來講明客戶端想要作什麼,內容由請求方法字段、URL字段和HTTP協議版本字段組成,它們之間用空格分隔。spa

以GET/index.html HTTP/1.1爲例說明請求報文的起始請求行信息詳情

請求方法字段示例

URL字段示例

HTTP協議版本

GET

/index.html

HTTP/1.1

02.請求頭部

請求頭部由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號「:」分隔。請求頭部的做用是經過客戶端把請求的相關信息告訴給服務器

                                                       請求頭信息

說明

Accept:image/gif,image/jpeg

媒體說明

Accept-Language: zh-en

語言類型

Accept0-Encoding:gzip,deflate

支持壓縮

User-Agent: Mozilla/4.0(compatile:MSIE6.0;Windows NT; ...)

客戶端類型

Host: www.etiantian.org

主機名

與請求報文相關的最經常使用的請求頭是Content-Type和Content-Length。

03.空行

最後一個請求頭部信息以後是一個空行,經過發送回車符和換行符,通知Web服務器空行如下不會有請求頭部的信息了。

04.請求報文主體

請求報文主體中包括了要發送給Web服務器的數據信息。請求報文主體不會應用於HTTP的GET命令方法,而是應用於POST方法。POST方法適用於須要客戶填寫表單的場合。

1.3.2 HTTP響應報文介紹

HTTP響應報文由起始行、響應頭部、空行和響應報文主體這幾個部分組成

1)起始行

響應報文的起始行也叫狀態行,用來講明服務器響應客戶端請求的情況。通常爲協議及版本號、數字及狀態碼、狀態狀況。例如:HTTP/1.1 200 OK

2)響應頭部

和請求報文相似,起始行的候命通常有若干個頭部字段。每一個頭部字段都包含一個名字和一個值,二者之間用冒號分隔。頭部結尾也是以一個空行結束

3)空行

最後一個響應頭部信息以後是一個空行,經過發送回車符和換行符,通知客戶端空行下文無頭部信息了

4)響應報文主體

響應報文主體中裝載了要返回給客戶端數據。這些數據能夠是文本,也能夠是二進制的(如圖片、視頻)

 

第二章 常見的狀態碼

200 – 服務器成功返回網頁

404 – 請求的網頁不存在

503 – 服務器超時

 

2.1 臨時響應

1xx(臨時響應)  表示臨時響應並須要請求者繼續執行操做的狀態碼。

 

100(繼續)請求者應當繼續提出請求。服務器返回此代碼表示已收到請求的第一部分,正在等待其他部分。

101(切換協議)請求者已要求服務器切換協議,服務器已確認並準備切換。

 

2.2 成功

2xx (成功)  表示成功處理了請求的狀態碼。

 

200(成功)服務器已成功處理了請求。一般,這表示服務器提供了請求的網頁。若是是對您的 robots.txt 文件顯示此狀態碼,則表示 Googlebot 已成功檢索到該文件。

201(已建立)請求成功而且服務器建立了新的資源。

202(已接受)服務器已接受請求,但還沒有處理。

203(非受權信息)服務器已成功處理了請求,但返回的信息可能來自另外一來源。

204(無內容)服務器成功處理了請求,但沒有返回任何內容。

205(重置內容)服務器成功處理了請求,但沒有返回任何內容。與 204 響應不一樣,此響應要求請求者重置文檔視圖(例如,清除表單內容以輸入新內容)。

206(部份內容)服務器成功處理了部分 GET 請求。

 

2.3 重定向

3xx (重定向)  要完成請求,須要進一步操做。一般,這些狀態碼用來重定向。Google 建議您在每次請求中使用重定向不要超過 5 次。您可使用網站管理員工具查看一下 Googlebot 在抓取重定向網頁時是否遇到問題。診斷下的網絡抓取頁列出了因爲重定向錯誤致使 Googlebot 沒法抓取的網址。

 

300(多種選擇)針對請求,服務器可執行多種操做。服務器可根據請求者 (user agent) 選擇一項操做,或提供操做列表供請求者選擇。

301(永久移動)請求的網頁已永久移動到新位置。服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。您應使用此代碼告訴 Googlebot 某個網頁或網站已永久移動到新位置。

302(臨時移動)服務器目前從不一樣位置的網頁響應請求,但請求者應繼續使用原有位置來響應之後的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼相似,會自動將請求者轉到不一樣的位置,但您不該使用此代碼來告訴 Googlebot 某個網頁或網站已經移動,由於 Googlebot 會繼續抓取原有位置並編制索引。

303(查看其餘位置)請求者應當對不一樣的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。對於除 HEAD 以外的全部請求,服務器會自動轉到其餘位置。

304(未修改)自從上次請求後,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容。

若是網頁自請求者上次請求後再也沒有更改過,您應將服務器配置爲返回此響應(稱爲 If-Modified-Since HTTP 標頭)。服務器能夠告訴 Googlebot 自從上次抓取後網頁沒有變動,進而節省帶寬和開銷。

305(使用代理)請求者只能使用代理訪問請求的網頁。若是服務器返回此響應,還表示請求者應使用代理。

307(臨時重定向)服務器目前從不一樣位置的網頁響應請求,但請求者應繼續使用原有位置來響應之後的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼相似,會自動將請求者轉到不一樣的位置,但您不該使用此代碼來告訴 Googlebot 某個頁面或網站已經移動,由於 Googlebot 會繼續抓取原有位置並編制索引。

 

2.4 請求錯誤

4xx(請求錯誤)  這些狀態碼錶示請求可能出錯,妨礙了服務器的處理。

 

400(錯誤請求)服務器不理解請求的語法。

401(未受權)請求要求身份驗證。對於登陸後請求的網頁,服務器可能返回此響應。

403(禁止)服務器拒絕請求。若是您在 Googlebot 嘗試抓取您網站上的有效網頁時看到此狀態碼(您能夠在 Google 網站管理員工具診斷下的網絡抓取頁面上看到此信息),多是您的服務器或主機拒絕了 Googlebot 訪問。

404(未找到)服務器找不到請求的網頁。例如,對於服務器上不存在的網頁常常會返回此代碼。

若是您的網站上沒有 robots.txt 文件,而您在 Google 網站管理員工具」診斷」標籤的 robots.txt 頁上看到此狀態碼,則這是正確的狀態碼。可是,若是您有 robots.txt 文件而又看到此狀態碼,則說明您的 robots.txt 文件可能命名錯誤或位於錯誤的位置(該文件應當位於頂級域,名爲 robots.txt)。

若是對於 Googlebot 抓取的網址看到此狀態碼(在」診斷」標籤的 HTTP 錯誤頁面上),則表示 Googlebot 跟隨的多是另外一個頁面的無效連接(是舊連接或輸入有誤的連接)。

405(方法禁用)禁用請求中指定的方法。

406(不接受)沒法使用請求的內容特性響應請求的網頁。

407(須要代理受權)此狀態碼與 401(未受權)相似,但指定請求者應當受權使用代理。若是服務器返回此響應,還表示請求者應當使用代理。

408(請求超時)服務器等候請求時發生超時。

409(衝突)服務器在完成請求時發生衝突。服務器必須在響應中包含有關衝突的信息。服務器在響應與前一個請求相沖突的 PUT 請求時可能會返回此代碼,以及兩個請求的差別列表。

410(已刪除)若是請求的資源已永久刪除,服務器就會返回此響應。該代碼與 404(未找到)代碼相似,但在資源之前存在而如今不存在的狀況下,有時會用來替代 404 代碼。若是資源已永久移動,您應使用 301 指定資源的新位置。

411(須要有效長度)服務器不接受不含有效內容長度標頭字段的請求。

412(未知足前提條件)服務器未知足請求者在請求中設置的其中一個前提條件。

413(請求實體過大)服務器沒法處理請求,由於請求實體過大,超出服務器的處理能力。

414(請求的 URI 過長)請求的 URI(一般爲網址)過長,服務器沒法處理。

415(不支持的媒體類型)請求的格式不受請求頁面的支持。

416(請求範圍不符合要求)若是頁面沒法提供請求的範圍,則服務器會返回此狀態碼。

417(未知足指望值)服務器未知足」指望」請求標頭字段的要求。

 

2.5 服務器錯誤

5xx(服務器錯誤)  這些狀態碼錶示服務器在處理請求時發生內部錯誤。這些錯誤多是服務器自己的錯誤,而不是請求出錯。

 

500(服務器內部錯誤)服務器遇到錯誤,沒法完成請求。

501(還沒有實施)服務器不具有完成請求的功能。例如,服務器沒法識別請求方法時可能會返回此代碼。

502(錯誤網關)服務器做爲網關或代理,從上游服務器收到無效響應。

503(服務不可用)服務器目前沒法使用(因爲超載或停機維護)。一般,這只是暫時狀態。

504(網關超時)服務器做爲網關或代理,可是沒有及時從上游服務器收到請求。

505(HTTP 版本不受支持)服務器不支持請求中所用的 HTTP 協議版本。

 

此筆記是本人學習摘記整理而成,此爲初稿(尚有諸多不完善之處),原創做品容許轉載,轉載時請務必以超連接形式標明文章原始出處,做者信息和本聲明,不然將追究法律責任。http://www.cnblogs.com/bananaaa/

相關文章
相關標籤/搜索