HTTP服務及狀態碼

来源:http://www.cnblogs.com/bananaaa/archive/2017/11/23/7883851.html
-Advertisement-
Play Games

第一章 HTTP 1.1 HTTP協議的概念 HTTP協議,全稱HyperText Transfer Protocol,中文名為超文本傳輸協議,是互聯網上常用的通信協議之一,它有很多的應用。但是流行的就是用於Web瀏覽器和Web伺服器之間的通信,即WWW應用或稱為Web應用。WWW全稱World W ...


第一章 HTTP

1.1 HTTP協議的概念

HTTP協議,全稱HyperText Transfer Protocol,中文名為超文本傳輸協議,是互聯網上常用的通信協議之一,它有很多的應用。但是流行的就是用於Web瀏覽器和Web伺服器之間的通信,即WWW應用或稱為Web應用。WWW全稱World Wilde Web,常稱為Web,中文譯為“萬維網”。它是目前互聯網上最受用戶歡迎的信息服務形式。

註意:HTTP協議的WWW服務應用的預設埠為80(埠的概念),另外的一個加密的WWW服務應用https的預設埠443

 

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協議版本欄位組成,它們之間用空格分隔。

以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 協議版本。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 工具:win10系統 orcl11G 問題:INS-13001環境不滿足最低要求 解決方法: 1 找到你解壓後的文件,點擊打開database文件夾 ==》stage文件夾 ==》cvu文件夾 ==》cvu_prereq.xml文件,用記事本打開cvu_prereq.xml文件; 2 在<CERTI ...
  • /etc/my.cnf 參考配置: [mysqld] #skip-grant-tables #default-character-set=utf8 #character-set-server=utf8 port= 3306 skip-external-locking key_buffer_size ...
  • [20171124]手工使用Seed_Database.dfb和Seed_Database.ctl建庫.txt--//昨天看yueli34的帖子,鏈接http://www.itpub.net/thread-2094530-1-1.html,註解與說明來自鏈接,感謝yueli34操作提示.--//自己 ...
  • 大概是用Win7的時候把IE關掉了,升級Win10之後就發現IE不見了,在Windows功能裡面也沒有;最近因為某些原因需要用到IE,還是用的虛擬機。 網上找到的方法普遍是執行命令:FORFILES /P %WINDIR%\servicing\packages /M Microsoft-Window ...
  • 1.當我們每次插入u盤後,都會自動創鍵U盤的設備節點/dev/sda%d 這是因為裡面調用了device_create()實現的, busybox的mdev機制就會根據主次設備號等信息,在/dev下創建設備節點,如下圖所示: 而想使用上面的sda1設備節點,讀寫數據時,還需要使用mount /dev ...
  • Zabbix是一個基於WEB界面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。 Zabbix能監視各種網路參數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。 Zabbix由2部分構成,zabbix server(監控端)與可選組件zabbi ...
  • 背景:某地市油庫,有臺電腦,IP是10.X.Y.A,總部掃描出來這個電腦開放了TCP 102埠,設置只允許油庫本地的網段(10.10.X.Y.A-B)這些IP能訪問這個設備的TCP 102埠,其他的不允許。 由於生產機器winxp策略已配置完畢,故本文采用win10為例。 創建策略 1打開組策略 ...
  • [20171124]xxd與通配符.txt--//linux 上許多命令都支持通配符,比如$ ls -l *.txt-rw-r--r-- 1 oracle oinstall 44801024 2017-11-24 09:16:38 c01.txt-rw-r--r-- 1 oracle oinstal ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...