一、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...