http 相關的知識

2022-09-03 02:21:09 字數 3462 閱讀 5593

一:什麼是http?

http就是一種協議

大致流程:

http客戶端發起請求,建立埠

http伺服器在埠監聽客戶端請求

http伺服器向客戶端返回狀態和內容

ghost 成熟的node部落格程式

tcp/ip 與http之間的關係:

首先是網域名稱解析

2:如果瀏覽器快取dns沒有找到或者已經過期,那麼就會搜尋作業系統自身的dns快取

3:上面如果也是沒有的話,就會讀取本地的host檔案

4:如果上面任然沒有找到,那麼瀏覽器就會發起乙個dns的系統呼叫請求【向本地主控dns伺服器,一般是本地寬頻運營商提供的dns】

5:首先是寬頻運營商伺服器檢視本身快取是否存在或者過期

6:若過期或者不存在,寬頻運營商就會發起乙個迭代的dns解析請求【一般是一路到萬網等查詢】,運營商伺服器把結果返回作業系統核心同時快取起來,作業系統核心把結果返回給瀏覽器,最終瀏覽器拿到了**對應的ip位址

網域名稱完成之後就要開始了經典的三次握手四次揮手了,三次握手是為了確認客戶端跟伺服器都能接受到對方的資訊。

1:瀏覽器就會隨機埠向伺服器的web程式(比如nginx)發起乙個tcp的連線請求、這個請求進入伺服器端以後通過了層層的路由裝置,進入到網絡卡,之後再進入的tcp/ip協議棧,還有可能要經過防火牆的過濾,最終到達了web服務端,連線建立成功

2:tcp/ip連線建立起來以後,瀏覽器就可以向伺服器傳送http請求了,比如http的get方法請求乙個根域裡的乙個網域名稱,協議可以採用http1.0的乙個協議。

3:瀏覽器接受到了這個請求,根據路徑引數經過後端的處理,把處理後的乙個結果的資料返回給了瀏覽器,如果是慕課網的頁面就會把完整的html頁面**返回給瀏覽器。

4:瀏覽器拿到了**的完整的html頁面**,在解析和渲染這個頁面的時候,裡面的js,css,靜態資源,他們同樣也是乙個http請求,都需要經過上面的七個步驟。

5:瀏覽器根據拿到的資源對頁面進行渲染,最終把乙個完整的頁面呈現給了使用者

具體開發中我們一般粗略的將這個http請求拆分開:

1:拆分成為請求,響應二者都會傳送http頭和正文資訊

2:http頭髮送的是一些附加的資訊:內容型別,伺服器傳送響應的時間,http狀態碼 

3:正文就是使用者提交的表單資料或者返回的資料

getpost

put                     替換更新,比如說是更新使用者的頭像或者乙個已有的一張

delete               刪除  請求伺服器刪除我們標示的某個資源

head == get      好處就是不用傳給全部的內容就可以獲取原資訊

http狀態碼

2開頭 (請求成功)表示成功處理了請求的狀態**。

200   (成功)  伺服器已成功處理了請求。 通常,這表示伺服器提供了請求的網頁。 

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

202   (已接受)  伺服器已接受請求,但尚未處理。 

203   (非授權資訊)  伺服器已成功處理了請求,但返回的資訊可能來自另一**。 

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

205   (重置內容) 伺服器成功處理了請求,但沒有返回任何內容。

206   (部分內容)  伺服器成功處理了部分 get 請求。

3開頭 (請求被重定向)表示要完成請求,需要進一步操作。 通常,這些狀態**用來重定向。

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

301   (永久移動)  請求的網頁已永久移動到新位置。 伺服器返回此響應(對 get 或 head 請求的響應)時,會自動將請求者轉到新位置。

302   (臨時移動)  伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

303   (檢視其他位置) 請求者應當對不同的位置使用單獨的 get 請求來檢索響應時,伺服器返回此**。

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

305   (使用**) 請求者只能使用**訪問請求的網頁。 如果伺服器返回此響應,還表示請求者應使用**。 

307   (臨時重定向)  伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

4開頭 (請求錯誤)這些狀態**表示請求可能出錯,妨礙了伺服器的處理。

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

401   (未授權) 請求要求身份驗證。 對於需要登入的網頁,伺服器可能返回此響應。 

403   (禁止) 伺服器拒絕請求。

404   (未找到) 伺服器找不到請求的網頁。

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

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

407   (需要**授權) 此狀態**與 401(未授權)類似,但指定請求者應當授權使用**。

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

409   (衝突)  伺服器在完成請求時發生衝突。 伺服器必須在響應中包含有關衝突的資訊。 

410   (已刪除)  如果請求的資源已永久刪除,伺服器就會返回此響應。 

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

412   (未滿足前提條件) 伺服器未滿足請求者在請求中設定的其中乙個前提條件。 

413   (請求實體過大) 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力。 

414   (請求的 uri 過長) 請求的 uri(通常為**)過長,伺服器無法處理。 

415   (不支援的**型別) 請求的格式不受請求頁面的支援。 

416   (請求範圍不符合要求) 如果頁面無法提供請求的範圍,則伺服器會返回此狀態**。 

417   (未滿足期望值) 伺服器未滿足"期望"請求標頭字段的要求。

5開頭(伺服器錯誤)這些狀態**表示伺服器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是伺服器本身的錯誤,而不是請求出錯。

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

501   (尚未實施) 伺服器不具備完成請求的功能。 例如,伺服器無法識別請求方法時可能會返回此**。 

502   (錯誤閘道器) 伺服器作為閘道器或**,從上游伺服器收到無效響應。 

503   (服務不可用) 伺服器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。 

504   (閘道器超時)  伺服器作為閘道器或**,但是沒有及時從上游伺服器收到請求。 

505   (http 版本不受支援) 伺服器不支援請求中所用的 http 協議版本。

http 相關知識

1.http1.1協議 主要是增加了持久連線的技術,瀏覽器訪問乙個web頁面時,會根據返回的html頁面解析,如果遇到比如img,css或者js檔案時,它會發起後續的http請求去獲取資源,每一次都會有tcp的建立和關閉,很消耗效能。來自所以http1.1提出了持久化連線的概念,只需要建立一次連線,...

HTTP相關知識

一.http協議的定義 二.http協議的特點 2.多次http請求 在客戶端請求網頁時多數情況下並不是一次請求就能成功的,服務端首先是響應html頁面,然後瀏覽器收到響應之後發現html頁面還引用了其他的資源,例如,css,js檔案,等等,還會自動傳送http請求這些需要的資源。現在的http版本...

HTTP協議相關知識

所有http響應的第一行都是狀態行,依次是當前http版本號,3位數字組成的狀態 以及描述狀態的短語,彼此由空格分隔。狀態 的第乙個數字代表當前響應的型別 1xx訊息 請求已被伺服器接收,繼續處理 2xx成功 請求已成功被伺服器接收 理解 並接受 3xx重定向 需要後續操作才能完成這一請求 4xx請...