HTTP

一. 服務(wù)器與瀏覽器的交互

  • 瀏覽器負(fù)責(zé)發(fā)送請求
  • 服務(wù)器在 80 端口接收請求
  • 服務(wù)器負(fù)責(zé)返回內(nèi)容(響應(yīng))
  • 瀏覽器負(fù)責(zé)下載響應(yīng)內(nèi)容

二. HTTP協(xié)議

超文本傳輸??協(xié)議(HTTP)矛渴,指導(dǎo)瀏覽器和服務(wù)器之間通信的應(yīng)用層協(xié)議

HTTP協(xié)議的版本
(1)HTTP/1.0
  • 客戶端與web服務(wù)器建立TCP連接后糠馆,每個連接只能發(fā)送一個請求稿茉,發(fā)送數(shù)據(jù)完畢,連接就關(guān)閉叶洞,如果還要請求其他資源蛙吏,就必須再新建一個連接
  • 有GET 涉瘾、POST 和HEAD方法
(2)HTTP/1.1(現(xiàn)使用版本)
  • 客戶端與WEB服務(wù)器建立連接后要出,在一個連接上可以獲取多個WEB資源。
  • GET 倒得、POST 泻红、HEAD、PUT霞掺、PATCH承桥、OPTIONS、DELETE等方法
  • 同一個TCP連接里根悼,所有的數(shù)據(jù)通信按次序進(jìn)行凶异。服務(wù)器只能順序處理,可能造成多個請求排隊(duì)挤巡,造成"隊(duì)頭堵塞"剩彬。
  • 避免隊(duì)頭堵塞,可以采用兩種方法矿卑,一是減少請求數(shù)喉恋,二是同時多開持久連接
(3)HTTP/2.0
  • 復(fù)用TCP連接,在一個連接里,客戶端和瀏覽器都可以同時發(fā)送多個請求或回應(yīng)轻黑,且不用按順序一一對應(yīng)糊肤,避免了“隊(duì)頭堵塞“
  • 允許服務(wù)器未經(jīng)請求,主動向客戶端發(fā)送資源氓鄙,即服務(wù)器推送

三. HTTP請求方法

1馆揉、POST
  • 向指定的資源提交要被處理的數(shù)據(jù),在請求體中向服務(wù)器發(fā)送請求數(shù)據(jù)
  • 提交的數(shù)據(jù)理論上講是沒有大小限制抖拦,HTTP協(xié)議規(guī)范也沒有進(jìn)行大小限制升酣,但實(shí)際上POST 所能傳遞的數(shù)據(jù)量大小取決于服務(wù)器的設(shè)置和內(nèi)存大小,一般不超過2M
  • 數(shù)據(jù)類型沒有限制
  • POST 請求不會被緩存态罪、不會保留在瀏覽器歷史記錄中噩茄、不能被收藏為書簽
2、GET
  • 通過URL請求指定的資源复颈,請求數(shù)據(jù)在URL中對所有人可見绩聘,使用 GET 的請求應(yīng)該只用于獲取數(shù)據(jù)
  • 傳輸?shù)臄?shù)據(jù)一般不能超過2K,實(shí)際上耗啦,URL不存在參數(shù)上限的問題凿菩,這個限制是特定的瀏覽器及服務(wù)器對它的限制
  • 數(shù)據(jù)類型只允許 ASCII 字符。
  • GET 請求可被緩存芹彬、可被收藏為書簽、會保留在瀏覽器歷史記錄中
3叉庐、HEAD
  • 與 GET 相同舒帮,但只返回 HTTP 報(bào)頭,不返回文檔主體
  • 一個使用場景是在下載一個大文件前先獲取其大小再決定是否要下載陡叠,以此可以節(jié)約帶寬資源
4玩郊、PUT
  • 使用請求中的負(fù)載創(chuàng)建或者替換目標(biāo)資源
  • PUT方法是冪等的,調(diào)用一次與連續(xù)調(diào)用多次是等價的(即沒有副作用)
5枉阵、DELETE
  • 刪除指定資源

四. HTTP請求

1. http請求的一個例子
POST / HTTP/1.1
Host: www.xxx.com
User-Agent: curl/7.54.0
Accept: */*
qqq: xxx
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

1234567890
2. http請求參數(shù)
  • 1 動詞 路徑 協(xié)議/版本
    2 Key1: value1
    2 Key2: value2
    2 Key3: value3
    2 Content-Type: application/x-www-form-urlencoded
    2 Host: www.xxx.com
    2 User-Agent: curl/7.54.0
    3
    4 要上傳的數(shù)據(jù)
  • 請求最多包含四部分译红,最少包含三部分。(也就是說第四部分可以為空)
  • 第三部分永遠(yuǎn)都是一個回車
  • 這里的路徑包括「查詢參數(shù)」兴溜,但不包括「錨點(diǎn)」侦厚,如果沒有寫路徑,那么路徑默認(rèn)為 /
  • User-Agent:產(chǎn)生請求的用戶代理信息(瀏覽器信息)
  • Accept:客戶端可識別的內(nèi)容類型
  • Host:請求的主機(jī)名拙徽,允許多個域名同處一個IP地址刨沦,即虛擬主機(jī)
  • 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
  • 常見的 Content-Type
text/html  HTML格式

text/plain  純文本格式   

text/css CSS格式

text/javascript JavaScript格式

application/x-www-form-urlencoded   是常用的表單發(fā)包方式,提交的單數(shù)據(jù)會轉(zhuǎn)換為鍵值對并按照 key1=val1&key2=val2 的方式進(jìn)行編碼

multipart/form-data 常見的 POST 數(shù)據(jù)提交的方式膘怕。我們使用表單上傳文件時想诅,必須讓 form 的 enctype 等于這個值

application/json   JSON數(shù)據(jù)格式

application/xml  XML數(shù)據(jù)格式

五. HTTP響應(yīng)

1. http響應(yīng)的一個例子
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2443
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:14:05 GMT
Last-Modified: Mon, 23 Jan 2019 13:24:45 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com;
path=/

<!DOCTYPE html>
<!--STATUS OK--><html> <head> 后面太長,省略了……
2. http響應(yīng)參數(shù)
  • 1 協(xié)議/版本號 狀態(tài)碼 狀態(tài)解釋
  • 2 Key1: value1
    2 Key2: value2
    2 Content-Length: 17931
    2 Content-Type: text/html
  • 3
  • 4 要下載的內(nèi)容
  • 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
2. http響應(yīng)狀態(tài)碼
(1)概述
  • 1** :信息,服務(wù)器收到請求来破,需要請求者繼續(xù)執(zhí)行操作
  • 2** :成功篮灼,操作被成功接收并處理
  • 3** :重定向,需要進(jìn)一步的操作以完成請求
  • 4** :客戶端錯誤徘禁,請求包含語法錯誤或無法完成請求
  • 5** :服務(wù)器錯誤诅诱,服務(wù)器在處理請求的過程中發(fā)生了錯誤
(2)常見
  • 100: 信息型狀態(tài)響應(yīng)碼表示目前為止一切正常, 客戶端應(yīng)該繼續(xù)請求
  • 200:請求成功
  • 202 :請求已經(jīng)接收到,但還未響應(yīng)晌坤,沒有結(jié)果
  • 300:被請求的資源有一系列可供選擇的回饋信息逢艘,每個都有自己特定的地址和瀏覽器驅(qū)動的商議信息,用戶或?yàn)g覽器能夠自行選擇一個首選的地址進(jìn)行重定向
  • 301:被請求的資源已永久移動到新位置骤菠,并且將來任何對此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個 URI 之一
  • 302:請求的資源現(xiàn)在臨時從不同的 URI 響應(yīng)請求它改。由于這樣的重定向是臨時的,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請求商乎。只有在Cache-Control或Expires中進(jìn)行了指定的情況下央拖,這個響應(yīng)才是可緩存的
  • 400:語義有誤,當(dāng)前請求無法被服務(wù)器理解鹉戚,除非進(jìn)行修改鲜戒,否則客戶端不應(yīng)該重復(fù)提交這個請求;請求參數(shù)有誤抹凳。
  • 401: 當(dāng)前請求需要用戶驗(yàn)證
  • 403:服務(wù)器已經(jīng)理解請求遏餐,但是拒絕執(zhí)行它
  • 404:請求失敗,請求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)
  • 408:請求超時
  • 500:服務(wù)器遇到了不知道如何處理的情況
  • 502:此錯誤響應(yīng)表明服務(wù)器作為網(wǎng)關(guān)需要得到一個處理這個請求的響應(yīng)赢底,但是得到一個錯誤的響應(yīng)
  • 504:當(dāng)服務(wù)器作為網(wǎng)關(guān)失都,不能及時得到響應(yīng)時返回此錯誤代碼

參考資料

  • MDN
  • 個人筆記
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市幸冻,隨后出現(xiàn)的幾起案子粹庞,更是在濱河造成了極大的恐慌,老刑警劉巖洽损,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庞溜,死亡現(xiàn)場離奇詭異,居然都是意外死亡碑定,警方通過查閱死者的電腦和手機(jī)流码,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來延刘,“玉大人旅掂,你說我怎么就攤上這事》萌ⅲ” “怎么了商虐?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵觉阅,是天一觀的道長。 經(jīng)常有香客問我秘车,道長典勇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任叮趴,我火速辦了婚禮割笙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘眯亦。我一直安慰自己伤溉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布妻率。 她就那樣靜靜地躺著乱顾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宫静。 梳的紋絲不亂的頭發(fā)上走净,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天,我揣著相機(jī)與錄音孤里,去河邊找鬼伏伯。 笑死,一個胖子當(dāng)著我的面吹牛捌袜,可吹牛的內(nèi)容都是我干的说搅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼虏等,長吁一口氣:“原來是場噩夢啊……” “哼弄唧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起博其,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤套才,失蹤者是張志新(化名)和其女友劉穎迂猴,沒想到半個月后慕淡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沸毁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年峰髓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片息尺。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡携兵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搂誉,到底是詐尸還是另有隱情徐紧,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站并级,受9級特大地震影響拂檩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嘲碧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一稻励、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧愈涩,春花似錦望抽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谐鼎,卻和暖如春舰蟆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狸棍。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工身害, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人草戈。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓塌鸯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唐片。 傳聞我的和親對象是個殘疾皇子丙猬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容