HTTP學習筆記

2021-09-26 23:53:24 字數 2982 閱讀 4100

一、http協議

http協議有3個特徵:持久連線、管道化以及無狀態。

持久連線:在http的早期版本中,一次http通訊完成後就會斷開連線,下一次再重新建立連線。在請求資源不多的情況下時,並不會有什麼影響。但隨著http的普及,請求的資源會越來越大,例如乙個html檔案中可能會包含多個css檔案、js檔案等。如果還是這樣操作,勢必會造成巨大的通訊開銷。因此,在http1.1版本中提出了持久連線,只要通訊兩端的任一一端沒有明確提出斷開,就保持連線狀態,以便下一次通訊復用該連線,避免了重複建立和斷開連線所造成的開銷,加速了頁面呈現。管道化:管道化是建立在持久連線上的進一步效能優化。過去,請求必須按照先進先出的佇列順序,也就是說傳送請求後,要等待並接收到響應,才能繼續下乙個請求。啟用管道化後,就會將佇列順序遷移到伺服器,這樣就能同時傳送多個請求,伺服器再按順序乙個接乙個地響應。

狀態管理:http是一種無狀態協議,請求和響應一一對應,不會再出現兩個請求復用乙個響應的情況。

在某些業務場景下,需要請求有狀態,例如後台登陸。成功登入後就得儲存登入狀態,否則每次跳轉進入其他頁面都會要求重新登入。為了能管理狀態,引入了cookie技術,cookie技術能讓請求和響應的報文都附加cookie資訊,客戶端將cookie值傳送出去,服務端接收並處理這個值,最終就能得到客戶端的狀態資訊。

二、http報文

http報文就是http協議通訊的內容,是一種簡單的格式化資料塊,由語義的純文字組成。

報文語法:請求報文和響應報文。請求報文由5部分組成:請求方法、請求url、http協議版本、可選的請求首部和內容。

響應報文也由5部分組成:http協議版本、狀態碼、原因短語、可選的響應首部和內容。

2.請求方法:http通過請求方法說明請求目的,期望伺服器執行某個操作。在可用的請求方法中,get和post是最常見的,而put和delete需要額外的安全機制保航才可以使用,提公升了使用門檻。

http常見的請求方法 方法

功能get

獲取資料

post

提交資料

put上傳檔案

delete

刪除檔案

head

獲取了內容以外的資源資訊

3.狀態碼

常見的幾類狀態碼

狀態碼類別原因短語

1xx資訊

請求已被接收,正在處理中

2xx成功

請求處理成功

3xx重定向

客戶端需要附加操作才能完成請求

4xx客戶端錯誤

客戶端發起的請求伺服器無法處理

5xx服務端錯誤

伺服器在處理請求時發生錯誤或異常

三、http首部

http首部提供的資訊能讓客戶端和伺服器執行指定的操作,例如客戶端發出的請求中帶有可接受的內容型別,伺服器就知道該返回什麼樣的內容。首部有5種型別:通用首部、請求首部、響應首部、實體首部和擴充套件首部

1、通用首部:通用首部既可以存在於請求中,也可以存在於響應中。

通用首部 首部

描述connection

管理持久連線

date

報文的建立日期,http協議使用了特殊的日期格式

transfer-encoding

傳輸報文主體時的編碼方式,例如分塊傳輸編碼

2、請求首部:請求首部只存在於請求報文中,提供客戶端的資訊以及對伺服器的要求。

請求首部 首部

描述accept

可接受的mime型別

accept-charset

可接受的字符集

accept-encoding

可接受的編碼格式,伺服器按指定的編碼格式壓縮資料

accept-language

可接受的語言種類

host

伺服器網域名稱和埠

referer

user-agent

使用者**資訊,例如作業系統、瀏覽器名稱和版本等

3、響應首部:響應首部只存在於響應報文中,提供伺服器的資訊以及對客戶端的要求。

響應首部 首部

描述accept-ranges

伺服器接受的範圍型別

server

伺服器軟體的名稱和版本

age響應存在時間,單位為秒,這個首部可能由**發出

4、實體首部:請求和響應都可能包含實體首部,實體首部提供了大量的實體資訊。

實體首部 首部

描述content-encoding

內容編碼格式,告知客戶端用這個編碼格式解壓

content-language

內容語言

content-length

內容尺寸,單位是位元組

content-type

內容是mime型別

常見筆試題:get和post的區別是什麼?

語義不同,get是獲取資料,post是提交資料。

http協議規定get比post安全,因為get只做讀取,不會改變伺服器中的資料,但這只是規範,並不能保證該方法實現也是安全的。

get請求會把附加引數帶在url上,而post請求會把提交資料放在報文內。在瀏覽器中,url長度會被限制,所以get請求能傳遞的資料有限,但是http協議其實並沒有對其做限制,都是瀏覽器在控制。

http協議規定get是冪等的,而post不是,所謂冪等是指多次請求返回相同的結果。實際情況中沒有這莫嚴格,當get請求動態資料時,每次的結果會可能不同。

HTTP學習筆記 HTTP報文

如果說http是網際網路的信使,那麼http報文就是運送的包裹。所有的http程式都是通過互相傳送報文來完成工作的。本文將介紹http報文的流動方式,報文的組成部分,請求和響應報文之間的區別等。http報文是在http應用程式之間傳送的資料塊,這些資料塊以文字形式存在,以描述了報文的內容及含義的元資...

HTTP學習筆記 HTTP協議

tcp ip協議按層次分為四層 應用層,傳輸層,網路層,資料鏈路層。該層決定了向使用者提 用服務時通訊的活動。如ftp和dns服務等。傳輸層有兩個性質不同的協議 tcp和udp協議。網路層的作用就是計算機之間通過網路裝置進行傳輸時,選擇一條傳輸路線。用來處理連線網路的硬體部分,硬體上的範疇均在該層的...

HTTP學習筆記

響應 響應行 協議,狀態碼,狀態文字 響應頭資訊 格式為key value 空行 主體資訊 可選 例 http 1.1 200 ok content type text html content length 5 hello 請求方法有哪些 有get post put delete head tra...