引言:作為一名軟體工程web專業學生,對於http的熟悉掌握是必不可少的,特此做記錄,打造自己的http棧。我們經常接觸到的就是url了,它就是我們訪問web的乙個字串位址,那麼uri是什麼呢?他們是什麼關係呢?
url:uniform resource location 統一資源定位符uri:uniform resource identifier 統一資源識別符號
這也就是說,uri是一種資源的標識;而url也是一種uri,也是一種資源的標識,但它也指明了如何定位locate到這個資源。
uri是一種抽象的資源標識,既可以是絕對的,也可以是相對的。但是url是一種uri,它指明了定位的資訊,必須是絕對的。
客戶端和伺服器端通過相互傳送報文進行通訊,要深刻理解http協議,就需要理解報文的格式和內容。
無論是請求報文還是響應報文都需要有報文首部,當然報文主體並不是必需的。
一般來說,請求報文的格式如下:
簡單的報文形式:
get / http/1.1 //請求行,包含用於請求的方法,請求的uri,http版本響應報文的格式如下://以下為各種首部字段
http/1.1 200 ok //狀態行,包含表明響應結果的狀態碼,原因短語和http版本告知伺服器意圖的http方法傳送http的方法有許多種,最常用的便是get和post,下面就這兩種進行詳細地說明。//以下為各種首部字段
server: bfe/1.0.8.5
date: tue, 06 oct 2015 14:48:28 gmt
content-type: text/html;charset=utf-8
transfer-encoding: chunked
connection: keep-alive
cache-control: private
1、get
get方法用來請求訪問uri所指定的資源,(我想訪問你的某個資源)並不對伺服器上的內容產生任何作用結果;每次get的內容都是相同的。get方式把請求所需要的引數放到url中,直接就可以在url中看見,有大小限制。
2、post
post方法用來傳輸實體主體,目的並不是獲取響應的主體內容,(我要把這條資訊告訴你),post方式則是把內容放在報文內容中,因此只要報文的內容沒有限制,它的大小就沒有限制。
3、總結
get用於獲取某個內容,post用於提交某種資料請求。
按照使用場景來說,一般使用者註冊的內容屬於私密的,這應該使用post方式;而針對某一內容的查詢,為了快速的響應,可以使用get方式。
無狀態協議與cookie
http是一種無狀態協議,也就是每一次傳送都是一次新的開始,伺服器並不知道也沒有必要知道當前連線的客戶端是否之前有過交集,那麼當需要進行儲存使用者登入狀態時,則出現了麻煩,這個時候使用cookie來儲存狀態。
cookie會根據伺服器端傳送的響應報文內的乙個叫做set-cookie的首部字段,通知客戶端儲存cookie(儲存在自己的電腦裡),當下次客戶端傳送請求時,cookie值會被新增到請求報文中傳送出去。
持久連線
顯而易見每次請求會造成無謂的tcp連線建立和斷開,增加通訊量的開銷。
引入持久連線
持久連線的特點是,只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態。目前http/1.1中預設為持久連線。
管線化可以同時並行傳送多個請求,不需要乙個乙個等待響應了。
http+加密+認證+完整性保護 = https
一些登陸介面和購物結算介面使用https通訊,也就是改用https://,https說簡單點就是它的通訊介面部分被ssl和tls協議代替而已。
在這裡主要說一下formbase認證,也就是表單認證。
使用cookie來管理session
1、客戶端把使用者ie和密碼等登入資訊放入報文的實體部分,以post方式傳送給伺服器。
2、伺服器進行身份認證,產生sessionid,加入到set-cookie內,返回給客戶端。/3、客戶端接收到sessionid後,將其加入cookie,下次請求時,瀏覽器會自動傳送cookie。
在傳輸過程中,一種安全地儲存密碼方式是,先利用給密碼加鹽的方式增加額外資訊,再使用雜湊hash函式計算出雜湊值後儲存。
http標頭檔案User Agent詳解
什麼是user agent user agent中文名為使用者 簡稱 ua,它是乙個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本 cpu 型別 瀏覽器及版本 瀏覽器渲染引擎 瀏覽器語言 瀏覽器外掛程式等。一些 常常通過判斷 ua 來給不同的作業系統 不同的瀏覽器傳送不同的頁面,因此可能造成...
http標頭檔案User Agent詳解
什麼是user agent user agent中文名為使用者 簡稱 ua,它是乙個特殊字串頭,使得伺服器能夠識別客戶使用的作業系統及版本 cpu 型別 瀏覽器及版本 瀏覽器渲染引擎 瀏覽器語言 瀏覽器外掛程式等。一些 常常通過判斷 ua 來給不同的作業系統 不同的瀏覽器傳送不同的頁面,因此可能造成...
HTTP標頭檔案(持續更新)
http標頭檔案可以包含很多有用的資訊,但作為初學者大多數是不清楚這些內容的含義和作用,故我在學習過程中記錄下主要的標頭檔案內容的含義和作用,以備後續考查。本文會不定期持續更新。下圖為火狐瀏覽器的火狐主頁的請求頭。乙個請求頭中包含了很多的資訊,但對於初學者而言,一臉懵逼,內心迷茫。那麼開始記錄了。寫...