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