HTTP協議總結

2021-09-12 10:15:44 字數 2072 閱讀 4226

http是應用層協議,由http客戶端發起乙個請求,建立乙個到伺服器指定埠的tcp連線。http 伺服器則在埠監聽客戶端的請求,一旦受到請求就會向客戶端返回乙個狀態(200,500等),以及返回內容。

:http是乙個無狀態的協議,通過伺服器認證後成功請求了乙個資源後再次請求這一資源時,伺服器仍舊會要求你表明身份。

http 的請求由三部分組成:

請求行訊息報頭

請求正文

請求行

對應:請求方法、請求的url、http協議版本、四個請求的常用方法:

get(獲取)、post(提交資源用以修改)、put(增加)、delete(刪除)

訊息報頭

報頭域格式:

名字+":"+空格+值

請求報頭包含了普通報頭、請求報頭、實體報頭。

1.普通報頭(了解):用於所有請求和響應訊息,只用於傳輸訊息

2.請求報頭:允許客戶端向伺服器傳遞請求的附加資訊以及客戶端自身的資訊

3.實體報頭:定義了正文和請求所標識的資源的資訊

http 的響應也由三部分組成:

狀態行訊息報頭

響應正文

狀態行

所有http響應的第一行都是狀態行,格式:

http版本號+空格+狀態碼+空格+描述狀態的短語

1.狀態碼:伺服器告訴客戶端,發生了什麼事

狀態碼型別:

常見狀態碼與狀態短語:

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

502作為閘道器或者**工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應。

504作為閘道器或者**工作的伺服器嘗試執行請求時,未能及時從上游伺服器或者輔助伺服器收到響應。

訊息報頭前面有提到 http 協議與伺服器有四種基本的互動方法:get、post、put、delete,對應查、改、增、刪四種操作。而最常用的就是 get 和 post ,前者用於獲取查詢資源,後者用於更新資源資訊。

區別:

http/1.0協議使用非持久連線(短連線),在非持久連線下,乙個tcp連線只傳輸乙個web物件;請求到的資源,伺服器會將整個物件傳送過來。

http/1.1協議預設使用持久連線(長連線),在持久連線下,不必為每個web物件新建乙個tcp連線,而且可以傳輸傳輸多個物件;同時,在請求訊息引入了range頭域,允許只請求資源的某個部分。

spdy(了解)

是對 http1.x 的優化的優化:

http/2.0協議基於spdy協議,區別於 http1.x:

概述中有提到 http 是無狀態協議,因此對於事務處理沒有記憶能力,那我們怎麼儲存狀態資訊呢?這時 cookie 和 session 的出現就是為了解決無狀態問題,用以儲存客戶端狀態資訊。

具體可見:cookie 和 httpsession

web快取位於伺服器和客戶端之間,快取機制會根據請求儲存輸出內容的副本。傳送乙個請求,快取會判斷是否是相同url,如果是則直接使用儲存的副本響應給客戶端,而不會再次向伺服器傳送相同的請求。

瀏覽器依靠請求和響應中的頭資訊來控制快取:

不能被快取的請求

http資訊頭中包含cache-control:no-cache,pragma:no-cache,或cache-control:max-age=0

post請求無法被快取

需要根據cookie確定內容的動態請求不能快取

HTTP協議總結

http協議是一種物件導向的協議,其簡單,快捷,方便,實用與分布式資訊網路管理系統 http協議的特點有 1.支援 c s和b s 支援客戶 伺服器模式 2.簡單快捷 向服務端請求時只需傳遞請求的方式 post,get,head,delete等 3.靈活 在傳遞時只需要在content type中定...

http協議總結

http 全稱 超文字傳輸協議 它是乙個應用層的協議,使用埠號80,關鍵要知道它是乙個無狀態的協議。無狀態就是後續處理訊息,沒有前面的訊息。1 cookie 2 session cookie 由伺服器產生,瀏覽器收到請求後,儲存在本地 瀏覽器下次請求伺服器時,就是帶上cookie,這樣伺服器就知道是...

http協議總結

什麼是時間戳?時間戳作用 防止快取,解決版本更新 不同步的問題。如果不加時間戳,當http相應狀態為304時,從本地快取中讀取資源,而沒有請求到伺服器。http狀態304 表示從本地讀取。解決非法盜用資源的方法?通過判斷referer 進行過濾,如下。public class imgfilter i...