HTTP
? ? ? HTTP: HyperText Transfer Protocol。超文本傳輸協(xié)議。一種分布式的,協(xié)作的,超媒體信息系統(tǒng)的協(xié)議,面向應(yīng)用層。
? ? ? 允許信息以類MIME消息的格式傳送,包括傳輸數(shù)據(jù)的元信息和對(duì)請(qǐng)求/響應(yīng)語句的修飾。
? ? ? 請(qǐng)求消息。
Method
Request-URL
HTTP-Version
General-Header;Request-Header;Entity-Header
Message-body
? ? ? 響應(yīng)消息。
HTTP-Version
Status-Code
Reason-Phrase
General-Header;Request-Header;Entity-Header
Message-body
看一眼Google的general消息(chrome)。
請(qǐng)求的方法:
GET:獲取Request-URL制定的信息,以實(shí)體的格式。
POST:請(qǐng)求源服務(wù)器接受請(qǐng)求中的實(shí)體作為請(qǐng)求資源的一個(gè)新的從屬物。(提交一個(gè)鍵值對(duì)的表單)
GET與POST的區(qū)別:
GET向服務(wù)器提交的request,參數(shù)在URL地址中,可以被直觀看見,大小有限制(一般取決于所用瀏覽器對(duì)URL長度的控制,chrome為8182字符)。POST將內(nèi)容放在消息Message-body中,沒有大小限制。
GET是等冪方法,POST不是。
等冪方法:多個(gè)相同請(qǐng)求的副作用與單個(gè)請(qǐng)求的副作用一直,即值不變,請(qǐng)求相同,不論次數(shù),結(jié)果相同。
響應(yīng)的狀態(tài)碼:
1XX,通知類的。 100:繼續(xù);101:切換協(xié)議。
2XX,成功的。 200:OK;201:已創(chuàng)建;202:接受。
3XX,重定向的。301永久移動(dòng);302:發(fā)現(xiàn)(暫時(shí)移動(dòng))。
4XX,客戶端錯(cuò)誤。400:Bad Request;401:未授權(quán);403:Forbidden;404:Not Found;405:MethodNot Allowed;408:請(qǐng)求超時(shí)。
5XX 服務(wù)器錯(cuò)誤。500:服務(wù)器內(nèi)部錯(cuò)誤;505:HTTP版本不支持。
絕對(duì)URI地址:
協(xié)議名稱://服務(wù)器地址:服務(wù)器端口號(hào)/帶層次的文件路徑?查詢字符#片段標(biāo)識(shí)符
看一眼谷歌的搜索地址:
HTTP的無狀態(tài)。
因?yàn)镠TTP是一種無狀態(tài)協(xié)議,每一次的信息都沒有關(guān)于上一次信息的記錄,所以,通過在客戶端保存cookie的方式記錄,再需要的時(shí)候發(fā)給對(duì)方。
看一眼Google的cookie。
在響應(yīng)消息中,設(shè)置客戶端的cookie:
在請(qǐng)求消息中,發(fā)送cookie(經(jīng)過加密的):
Cookie屬性。
Expires:絕對(duì)過期時(shí)間。采用格式:星期,日-月-年 時(shí):分:秒 GMT(格林威治時(shí)間)。
Max-Age:存活時(shí)間。以秒為單位,存在Expires和Max-Age時(shí),以后者為準(zhǔn)。
Path:指定與cookie關(guān)聯(lián)的網(wǎng)址。
Domain:目標(biāo)域,默認(rèn)服務(wù)器的主機(jī)名。
Secure:必須通過安全協(xié)議傳送。
HTTPOnly:不允許被腳本APIs獲取。
HTTPS(HTTP secure)
通信加密,HTTP可以與SSL(Secure Socket Layer,安全套接層)或TLS(Transfer Layer Security,安全層傳輸協(xié)議)的組合。與SSL的組合,成為HTTPS或HTTP OverSSl;與TLS的成為 HTTP Over TLS。
SSL加密過程:
服務(wù)器與客戶互相協(xié)商安全組件。(客戶發(fā)送一個(gè)自己支持的安全組件,由服務(wù)器挑選后返回一個(gè)結(jié)果)
服務(wù)器用自己的公開密匙向數(shù)字證書認(rèn)證機(jī)構(gòu)發(fā)送,數(shù)字證書認(rèn)證機(jī)構(gòu)用機(jī)構(gòu)的私有密匙給服務(wù)器的公有密匙署數(shù)字簽名,兵頒發(fā)公匙證書。服務(wù)器將簽名公匙和證書發(fā)給客戶。
客戶用數(shù)字認(rèn)證機(jī)構(gòu)的公匙驗(yàn)證簽名的有效性。(公匙一般內(nèi)置在瀏覽器中)??蛻羯梢粋€(gè)隨機(jī)數(shù),作為pre-master secret,用服務(wù)器的公匙加密后,發(fā)給服務(wù)器。
服務(wù)器用私有密匙解開pre-master secret,然后生成master secret。
客戶端此時(shí)擁有服務(wù)器的公匙和一個(gè)隨機(jī)數(shù) master secret;服務(wù)器擁有自己的私匙和客戶的master secret。
服務(wù)器對(duì)客戶的認(rèn)證方式:
BASIC(基本認(rèn)證);DIGET(摘要認(rèn)證);SSL客戶端認(rèn)證;FORM BASED(基于表單的認(rèn)認(rèn)證。