時間定格在早上 6
點,伴隨着 「噠噠噠」 的聲響,瀏覽器地址欄出現了 https://blog.acohome.cn
瀏覽器知道,又是一個早高峯來襲。跨域
「各部門就緒!」 瀏覽器老大,一聲令下,各部門都開始作起了準備工做。瀏覽器
「去 HTTP
服務部,記住你的請求方式是 GET
,還有這些請求頭也一塊兒拿走。」 伴隨着 Enter
的輸入,瀏覽器老大對新生成的 URL
說道。緩存
「瀏覽器老大讓我來找你!」 URL
飛奔到個人辦公室說道。服務器
「好,請求方式?」 我一看時間,早上 6
點,知道早高峯即未來臨,趕緊說道。工具
「GET
」測試
「請求頭有嗎?」code
「有!URL
拿出一個袋子說道。」cdn
「OK
」 說着,我拿起放在一旁的麻醉針,一針下去,URL
進入了休眠。沒錯個人辦公室就是個人手術室。blog
拿起一旁的手術刀,手起刀落,取出 URL
的 <path>?<query>
部分,拿起一個袋子,扔入 GET
字符,取出的部分以及我記錄的版本號 HTTP/1.1
,膠帶一卷,打包放在一旁。ip
「請求行 OK
,接下來是請求頭。」 我自言自語道,順手拿起了 URL
帶過來的袋子。
「讓我檢查檢查。嗯,Accept
,Cookie
,User-Agent
...,而後加上 Host
。」 我一邊檢查,一邊再次拿出手術刀,把 URL
的 HOST
部分切下,放入袋中。
「OK
」 確認無誤後,打包,放到了剛剛打包好的請求行下面。
「GET
沒有請求體,直接生成報文。」 按照流程,我將打包好的請求行與請求頭一併丟入了辦公室一旁的通道中。
「接下來就交給 Tcp
兄弟啦。」 我對着通道喊道。
「duang
~」 通道一頭髮出物體碰撞的聲音 「能不能事先通知下,個人腦殼禁不起你這麼砸!」 通道另外一側來了句抱怨。
「下次必定注意,如今早高峯,急了點!」
「duang
~ 」 頭上被撞了個大包,我憤怒的喊道:「Tcp
你幹嗎!!」
「早高峯,早高峯 ~」 通道的另外一頭傳來了 Tcp
略帶報復的聲音。「這是剛剛請求的響應,快處理吧!」
「行!」 我拿起了手術刀,將剛剛的 URL
進行了拼裝,順便把響應報文給大切八塊。
伴隨着一盆冷水潑下,URL
甦醒過來。
「這袋響應頭信息,我已經按照鍵值對弄好了,這堆是響應體,我這處理不了,你就這樣帶走吧。」 對着剛剛甦醒的 URL
說道。
「能不能不是每次都潑水啊,個人髮型!」 URL
抱怨道。
「別囉嗦了,快去瀏覽器老大那!瀏覽器老大都快等不及了。」
「行吧!」 瀏覽器老大着急的樣子他但是知道的,帶着東西,URL
趕緊往瀏覽器那兒跑去。
「我回來了,這是數據。」 URL
跑的有點喘不過氣來。
瀏覽器理都沒理 URL
,一頭鑽進了 URL
一旁的響應體中。
「文檔解析器給我上,CSS
你也別閒着啊,沒看到這有 style
嗎?JavaScript
你也趕忙的動起來。」 瀏覽器老大指揮道。
「這有個 link
須要 CSS
資源!」 文檔解析器說道。「這還有個 script
使用的是外部腳本,須要 xxx.js
。」
「好的,我立刻生成 URL
去請求資源。」 瀏覽器老大邊說,邊生成了一系列的 URL
,命令他們去 HTTP
服務部。
看着蜂擁而至的 URL
,我攥了攥手中的工具,知道,早高峯來了。
不久,HTTP
服務部排起了長隊。一批批的 URL
來,又有一批批的 URL
帶着包裹出去。
終於瀏覽器老大叫來了 GPU
顯示了頁面,忙碌的早高峯過去了。我拿起一旁還冒着熱氣的咖啡,喝了一口。
「JavaScript
讓我到你這!」 一個 URL
跑了過來。不一樣與以前的 URL
這個 URL
除了帶着一袋請求頭,還帶了一箱數據。
放下手中的咖啡,「請求方式?」 我問道。
「POST
」 URL
說道。
「看來用戶開始提交數據了啊。」 說着,我拿起了放在一旁的麻醉針。
「請求行:POST /create HTTP/1.1
沒毛病。」
「請求頭」 我拿起 URL
帶過來的請求頭,檢查一遍後,加入了 Host
並打包。
「這些數據我控制不了,直接塞到請求體中吧。」 我把數據按請求行,請求頭,請求體放好,打包後,扔進了一旁的通道里。再次端起了桌子上的咖啡喝了一口。
過了大約 5
秒,通道蹦出來一個報文,我知道這是剛剛的那個 Post URL
,拿起個人工具,拆解了數據後,讓 URL
回到 JavaScript
那。
忙碌的早高峯終於過去,清閒的時間開始,正式介紹下我本身,我,HTTP
服務,根據 HTTP
(超文本傳輸協議)生成報文,報文也就是剛剛被我扔進通道的東西。
超文本傳輸協議將報文分紅了 3
部分,根據報文的不一樣,格式也有所區別,也是我這間手術室存在的意義。
內容 | 含義 |
---|---|
請求行 | 請求方式 + 請求路徑 + 協議版本。 |
請求頭 | 表明瀏覽器信息以及當前請求的狀態,好比 Host ,Accept ,User-Agent 等。 |
請求體 | 當前請求所攜帶的數據,提供給服務器上對應的處理程序使用。 |
大概就長這樣吧。
內容 | 含義 |
---|---|
響應行 | 協議版本 + 狀態碼 + 狀態碼解釋短語 |
響應頭 | 表明服務器信息以及當前響應的狀態,好比 Date ,ETag ,Server 等。 |
響應體 | 當前響應所攜帶的數據,提供給瀏覽器上的處理程序使用。 |
大概就長這樣吧。
不一樣的請求方式表明了對資源不一樣的處理,雖然這個是 URL
直接給個人,但所表明的具體意義我仍是知道的。
請求方式 | 含義 |
---|---|
GET |
返回請求路徑所對應的資源。 |
HEAD |
不須要返回資源,僅返回響應行和響應頭便可。 |
POST |
向請求路徑提交數據,建立新的資源。 |
PUT |
更新請求路徑所對應的資源。 |
PATCH |
更新請求路徑所對應的部分資源。 |
DELETE |
刪除請求路徑所對應的資源。 |
OPTIONS |
獲取請求路徑對應資源的信息(是否可可跨域獲取,能夠支持哪些請求方式等)。 |
TRACE |
直接返回請求,主要用於測試。 |
不一樣的響應狀態碼,對應了不一樣的資源狀態。
狀態碼 | 含義 |
---|---|
1** |
服務器收到請求,須要請求者繼續執行操做。 |
2** |
請求成功。 |
3** |
資源移動或是未發生變動,須要瀏覽器進行下一步操做,請求移動後的地址,或直接使用緩存資源。 |
4** |
請求錯誤,包括請求語法錯誤,或是資源不存在。 |
5** |
服務器錯誤,資源存在,但服務器處理時發生錯誤。 |
OK
HTTP
大體內容也就這些,只是一個協議嘛,不是太複雜。
「還沒介紹響應頭、請求頭啊!」 辦公室裏忽然出現一個聲音。
「等用到的時候說也來得及。」 我想也沒想的回了,看着空蕩蕩的手術室,陰風吹過,頓時驚出一身冷汗。
「room 屠宰場。」 聲音再次出現:「我是要成爲海賊王的男人。」
「見鬼了??」 我有點慌張。「聽着聲音好像來着屏幕外?奇怪」