http協議簡述

来源:https://www.cnblogs.com/caesar-id/archive/2019/07/22/11228740.html
-Advertisement-
Play Games

一、HTTP協議概述 HTTP是一個簡單的請求-響應協議,屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分散式超媒體信息系統。它通常運行在TCP之上。它指定了客戶端發送給伺服器什麼樣的消息得到什麼樣的響應。 二、HTTP協議的主要特點可概括如下: 1.B/S結構(Browser/Serv ...


一、HTTP協議概述

       HTTP是一個簡單的請求-響應協議,屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分散式超媒體信息系統。它通常運行在TCP之上。它指定了客戶端發送給伺服器什麼樣的消息得到什麼樣的響應。

二、HTTP協議的主要特點可概括如下:

1.B/S結構(Browser/Server,瀏覽器/伺服器模式),這種模式統一了客戶端,將系統功能實現的核心部分集中到伺服器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器就可以訪問伺服器。
2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、POST。每種方法規定了客戶與伺服器聯繫的類型不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
5.無狀態:HTTP無狀態協議,是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。

三、HTTP協議詳解之請求篇

http請求由三部分組成,分別是:請求行、消息報頭(請求行)、請求正文(請求內容)。

1、請求行以一個方法符號開頭,以空格分開,後面跟著請求的URI和協議的版本,格式如下:Method Request-URI HTTP-Version CRLF
 Method:表示請求方法如GET,POST等;

Request-URI:是一個統一資源標識符如www.baidu.com;

HTTP-Version:表示請求的HTTP協議版本如/ HTTP/1.1 

CRLF:表示回車和換行(\r\n 除了作為結尾的CRLF外,不允許出現單獨的CR或LF字元)。

請求方法(所有方法全為大寫)有多種,各個方法的解釋如下:

方法描述
GET 請求獲取Request-URI所標識的資源(請求指定的頁面信息),並返回實體主體。
HEAD 類似於 GET 請求,只不過返回的響應中沒有具體的內容,響應消息報頭,用於獲取報頭
POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。
PUT 請求伺服器存儲一個資源,從客戶端向伺服器傳送的數據取代指定的文檔的內容。
DELETE 請求伺服器刪除指定的頁面。
CONNECT HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理伺服器。
OPTIONS 請求查詢伺服器的性能,或者查詢與資源相關的選項和需求,允許客戶端查看伺服器的性能。
TRACE 請求伺服器回顯伺服器收到的請求,主要用於測試或診斷。
PATCH 是對 PUT 方法的補充,用來對已知資源進行局部更新 。

 

四、HTTP協議詳解之響應篇

在接收和解釋請求消息後,伺服器返回一個HTTP響應消息。HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭(響應頭)、響應正文

狀態行格式:HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version:表示請求的HTTP協議版本如/ HTTP/1.1

Status-Code:表示伺服器發回的響應狀態代碼,如200表示請求響應成功;

Reason-Phrase:表示狀態代碼的文本描述。
狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值,如下列表所示:

1xx

消息 描述
100 Continue 伺服器僅接收到部分請求,但是一旦伺服器並沒有拒絕該請求,客戶端應該繼續發送其餘的請求。
101 Switching Protocols 伺服器轉換協議:伺服器將遵從客戶的請求轉換到另外一種協議。

 2xx

消息 描述
200 OK 請求成功(其後是對GET和POST請求的應答文檔。)
201 Created 請求被創建完成,同時新的資源被創建。
202 Accepted 供處理的請求已被接受,但是處理未完成。
203 Non-authoritative Information 文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝。
204 No Content 沒有新文檔。瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
205 Reset Content 沒有新文檔。但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。
206 Partial Content 客戶發送了一個帶有Range頭的GET請求,伺服器完成了它。

 

 3xx

消息 描述
300 Multiple Choices 多重選擇。鏈接列表。用戶可以選擇某鏈接到達目的地。最多允許五個地址。
301 Moved Permanently 所請求的頁面已經轉移至新的url。
302 Found 所請求的頁面已經臨時轉移至新的url。
303 See Other 所請求的頁面可在別的url下被找到。
304 Not Modified 未按預期修改文檔。客戶端有緩衝的文檔併發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。伺服器告訴客戶,原來緩衝的文檔還可以繼續使用。
305 Use Proxy 客戶請求的文檔應該通過Location頭所指明的代理伺服器提取。
306 Unused 此代碼被用於前一版本。目前已不再使用,但是代碼依然被保留。
307 Temporary Redirect 被請求的頁面已經臨時移至新的url。

4xx

消息 描述
400 Bad Request 伺服器未能理解請求。
401 Unauthorized 被請求的頁面需要用戶名和密碼。
401.1 登錄失敗。
401.2 伺服器配置導致登錄失敗。
401.3 由於 ACL 對資源的限制而未獲得授權。
401.4 篩選器授權失敗。
401.5 ISAPI/CGI 應用程式授權失敗。
401.7 訪問被 Web 伺服器上的 URL 授權策略拒絕。這個錯誤代碼為 IIS 6.0 所專用。
402 Payment Required 此代碼尚無法使用。
403 Forbidden 對被請求頁面的訪問被禁止。
403.1 執行訪問被禁止。
403.2 讀訪問被禁止。
403.3 寫訪問被禁止。
403.4 要求 SSL。
403.5 要求 SSL 128。
403.6 IP 地址被拒絕。
403.7 要求客戶端證書。
403.8 站點訪問被拒絕。
403.9 用戶數過多。
403.10 配置無效。
403.11 密碼更改。
403.12 拒絕訪問映射表。
403.13 客戶端證書被吊銷。
403.14 拒絕目錄列表。
403.15 超出客戶端訪問許可。
403.16 客戶端證書不受信任或無效。
403.17 客戶端證書已過期或尚未生效。
403.18 在當前的應用程式池中不能執行所請求的 URL。這個錯誤代碼為 IIS 6.0 所專用。
403.19 不能為這個應用程式池中的客戶端執行 CGI。這個錯誤代碼為 IIS 6.0 所專用。
403.20 Passport 登錄失敗。這個錯誤代碼為 IIS 6.0 所專用。
404 Not Found 伺服器無法找到被請求的頁面。
404.0 (無)–沒有找到文件或目錄。
404.1 無法在所請求的埠上訪問 Web 站點。
404.2 Web 服務擴展鎖定策略阻止本請求。
404.3 MIME 映射策略阻止本請求。
405 Method Not Allowed 請求中指定的方法不被允許。
406 Not Acceptable 伺服器生成的響應無法被客戶端所接受。
407 Proxy Authentication Required 用戶必須首先使用代理伺服器進行驗證,這樣請求才會被處理。
408 Request Timeout 請求超出了伺服器的等待時間。
409 Conflict 由於衝突,請求無法被完成。
410 Gone 被請求的頁面不可用。
411 Length Required "Content-Length" 未被定義。如果無此內容,伺服器不會接受請求。
412 Precondition Failed 請求中的前提條件被伺服器評估為失敗。
413 Request Entity Too Large 由於所請求的實體的太大,伺服器不會接受請求。
414 Request-url Too Long 由於url太長,伺服器不會接受請求。當post請求被轉換為帶有很長的查詢信息的get請求時,就會發生這種情況。
415 Unsupported Media Type 由於媒介類型不被支持,伺服器不會接受請求。
416 Requested Range Not Satisfiable 伺服器不能滿足客戶在請求中指定的Range頭。
417 Expectation Failed 執行失敗。
423 鎖定的錯誤。

 5xx

消息 描述
500 Internal Server Error 請求未完成。伺服器遇到不可預知的情況。
500.12 應用程式正忙於在 Web 伺服器上重新啟動。
500.13 Web 伺服器太忙。
500.15 不允許直接請求 Global.asa。
500.16 UNC 授權憑據不正確。這個錯誤代碼為 IIS 6.0 所專用。
500.18 URL 授權存儲不能打開。這個錯誤代碼為 IIS 6.0 所專用。
500.100 內部 ASP 錯誤。
501 Not Implemented 請求未完成。伺服器不支持所請求的功能。
502 Bad Gateway 請求未完成。伺服器從上游伺服器收到一個無效的響應。
502.1 CGI 應用程式超時。 ·
502.2 CGI 應用程式出錯。
503 Service Unavailable 請求未完成。伺服器臨時過載或當機。
504 Gateway Timeout 網關超時。
505 HTTP Version Not Supported 伺服器不支持請求中指明的HTTP協議版本。

 


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

-Advertisement-
Play Games
更多相關文章
  • 通過Kafka的快速入門 https://www.cnblogs.com/tree1123/p/11150927.html 能瞭解到Kafka的基本部署,使用,但他和其他的消息中間件有什麼不同呢? Kafka的基本原理,術語,版本等等都是怎麼樣的?到底什麼是Kafka呢? 一、Kafka簡介 "ht ...
  • 腳本: 腳本運行結果: ...
  • "消息隊列內部實現原理" "兩種消息傳輸方式" "Kafka" "kafka 簡介" "kafka 集群角色" "Kafka 工作流程分析" "Kafka 生產過程分析" "寫入方式" "分區(partition)" "副本(replication)" "寫入數據" "Broker 保存消息" "存 ...
  • 達內全套前端視頻教程,包括js,h5,css3等,如果打不開,請聯繫本人,可重新分享 下載地址 ...
  • 後端路由:對於普通的網站,所有的超鏈接都是URL地址,所有的URL地址都對應伺服器上對應的資源 前端路由:對於單頁面應用程式來說,主要通過URL中的hash(#號)來實現不同頁面之間的切換(不會刷新頁面),同時,hash有一個特點:HTTP請求中不會包含hash相關的內容;所以,單頁面程式中的頁面跳 ...
  • 記錄一下使用項目中使用EasyUI遇到的bug,廢話少說直接上菜 - _-(bug)。。。。。 bug :: .netcore創建一個web應用時候,會自動引入jQuery庫以及一些插件,但是在使用EasyUI裡面的tree組件時,他會報一個錯,運行時候點擊F12即可顯示出來:.tree() is ...
  • CSS水平垂直居中 1 絕對定位 + 轉換 2 彈性模型 3 單元格方式 ...
  • npm install lib-flexible --save npm install px2rem-loader --save-dev rule .use('px2rem-loader') .loader('px2rem-loader') .options({emUnit:37.5}) 正常移動端 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...