HTTP請求詳解

2022-08-25 18:21:16 字數 3859 閱讀 6369

web使用一種名為http(hypertext transfer protocol),超文字傳輸協議作為規範,完成從客戶端到服務端等一系列運作過程。web是建立在http協議上通訊的。

1.http通訊機制是在一次完整的http通訊過程中,web瀏覽器與web伺服器之間將完成下列7個步驟:

(1)建立tcp連線在http工作開始之前,web瀏覽器首先要通過網路與web伺服器建立連線,該連線是通過tcp來完成的,該協議與ip協議共同構建internet,即著名的tcp/ip協議族,

因此internet又被稱作是tcp/ip網路。

http是比tcp更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連線,因此,首先要建立tcp連線,一般tcp連線的埠號是80

(2)web瀏覽器向web伺服器傳送請求命令一旦建立了tcp連線,web瀏覽器就會向web伺服器傳送請求命令

例如:get/sample/hello.jsp http/1.1

(3)web瀏覽器傳送請求頭資訊瀏覽器傳送其請求命令之後,還要以頭資訊的形式向web伺服器傳送一些別的資訊,之後瀏覽器傳送了一空白行來通知伺服器,它已經結束了該頭資訊的傳送。

(4)web伺服器應答客戶機向伺服器發出請求後,伺服器會客戶機回送應答,

應答的第一部分是協議的版本號和應答狀態碼

(5)web伺服器傳送應答頭資訊正如客戶端會隨同請求傳送關於自身的資訊一樣,伺服器也會隨同應答向使用者傳送關於它自己的資料及被請求的文件。

(6)web伺服器向瀏覽器傳送資料web伺服器向瀏覽器傳送頭資訊後,它會傳送乙個空白行來表示頭資訊的傳送到此為結束,接著,它就以content-type應答頭資訊所描述的格式傳送使用者所請求的實際資料

(7)web伺服器關閉tcp連線一般情況下,一旦web伺服器向瀏覽器傳送了請求資料,它就要關閉tcp連線,然後如果瀏覽器或者伺服器在其頭資訊加入了這行**

http是一種無狀態協議。

connection:keep-alive

tcp連線在傳送後將仍然保持開啟狀態,於是,瀏覽器可以繼續通過相同的連線傳送請求。保持連線節省了為每個請求建立新連線所需的時間,還節約了網路頻寬。

2.http請求格式

2.1  當瀏覽器向web伺服器發出請求時,它向伺服器傳遞了乙個資料塊,也就是請求資訊,http請求資訊由3部分組成:

l   請求方法uri協議/版本

l   請求頭(request header)

l   請求正文

(1)請求方法uri協議/版本

請求的第一行是「方法url議/版本」:http://localhost:63342/webpack/index.html http/1.1

根據http標準,http請求可以使用多種請求方法。例如:http1.1支援7種請求方法:get、post、head、options、put、delete和tarce。在internet應用中,最常用的方法是get和post。

url完整地指定了要訪問的網路資源,通常只要給出相對於伺服器的根目錄的相對目錄即可,因此總是以「/」開頭,最後,協議版本宣告了通訊過程中使用http的版本,「http/1.1代表協議和協議的版本。

(2)請求頭(request header)

請求頭包含許多有關的客戶端環境和請求正文的有用資訊。例如,請求頭可以宣告瀏覽器所用的語言,請求正文的長度等。

(3)請求正文

請求頭和請求正文之間是乙個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字串資訊:

插個知識點,簡單講一下get請求和post請求的區別:

1.使用get請求時,引數在url中顯示,而使用post方式,則不會顯示出來

2.使用get請求長度有限制,傳送資料量小;post請求長度無限制,傳送資料量大;

3.從效能角度上,傳送相同的資料,get請求的速度最多可達到post的兩倍。

4.使用get請求能夠被快取,post請獲得的網路資料不能被快取。

2.2  http應答與http請求相似,http響應也由3個部分構成,分別是:

l 協議狀態版本**描述

l 響應頭(response header)

l 響應正文

(1)協議狀態版本**描述

協議狀態**它表示通訊所用的協議是http1.1伺服器已經成功的處理了客戶端發出的請求(200表示成功):

(2)響應頭(response header)

響應頭(response header)響應頭也和請求頭一樣包含許多有用的資訊,例如伺服器型別、日期時間、內容型別和長度等:

(3)響應正文

響應正文就是伺服器返回的html頁面:

插個知識點,列出一些常用的狀態碼含義:

1xx-資訊類(information),表示收到web瀏覽器請求,正在進一步的處理中

2xx-成功類(successful),表示使用者請求被正確接收,理解和處理例如:

200 請求已成功,請求所希望的響應頭或資料體將隨此響應返回。

3xx-重定向類(redirection),表示請求沒有成功,客戶必須採取進一步的動作。

303 對應當前請求的響應可以在另乙個 uri 上被找到,而且客戶端應當採用 get 的方式訪問那個資源。這個方法的存在主要是為了允許由指令碼啟用的post請求輸出重定向到乙個新的資源。

304 如果客戶端傳送了乙個帶條件的 get 請求且該請求已被允許,而文件的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則伺服器應當返回這個狀態碼。

客戶端收到304響應後,就會從快取中讀取對應的資源.

4xx-客戶端錯誤(client error),表示客戶端提交的請求有錯誤 例如:404 not found,意味著請求中所引用的文件不存在。

400 1、語義有誤,當前請求無法被伺服器理解。除非進行修改,否則客戶端不應該重複提交這個請求。   2、請求引數有誤。

403 伺服器已經理解請求,但是拒絕執行它。

404 請求失敗,請求所希望得到的資源未被在伺服器上發現。

5xx-伺服器錯誤(server error)表示伺服器不能完成對請求的處理:

500 伺服器內部錯誤,一般來說,這個問題都會在伺服器的程式碼出錯時出現。

uri用字串標示某一網際網路資源,而url表示資源的地點。可見url是uri的子集。

uri要使用涵蓋全部必要資訊的uri、絕對url以及相對url。相對url是指從瀏覽器中基本uri處理的url,來先看下uri的格式

Http請求詳解

http的請求格式 請求格式中的四個部分資訊 請求行資訊 請求頭資訊 空白行資訊 請求體資訊 post day04 http index.html http 1.1 請求行資訊 name fdghd 請求體資訊 一 請求行資訊 請求行資訊分三部分 1 請求方式 post post 該方式提交的資料會...

Http協議詳解 Http請求詳解

http是hypertext transfer protocol 超文字傳輸協議 的簡寫,它是tcp ip協議的乙個應用層協議,用於定義web瀏覽器與web伺服器之間交換資料的過程。客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,http協議用於定義客戶端與w...

HTTP請求方法詳解

get get方法意思是獲取被請求uri request uri 指定的資訊 以實體的格式 如果請求 uri涉及到乙個資料生成過程,那麼這個過程生成的資料應該被作為實體在響應中返回而不是 過程的源文字,除非源文字恰好是過程的輸出。如果請求訊息包含 if modified since,if unmod...