歡迎來(lái)到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個(gè)技術(shù)小知識(shí)。
HTTP 協(xié)議中,瀏覽器或應(yīng)用在請(qǐng)求和接收資源時(shí),都會(huì)攜帶一些請(qǐng)求頭和響應(yīng)頭信息。這些信息有時(shí)對(duì)我們調(diào)試、排查問(wèn)題很有幫助。比如,當(dāng)你用瀏覽器訪(fǎng)問(wèn)某個(gè)網(wǎng)站時(shí),通過(guò)抓包工具像 Charles 就能看到很多有用的 header 信息。
1. 請(qǐng)求頭(Request Header)
每次瀏覽器或應(yīng)用向服務(wù)器發(fā)起請(qǐng)求時(shí),都會(huì)帶上請(qǐng)求頭(Request Header),常見(jiàn)的有:
· Host:請(qǐng)求的主機(jī)名,可以是域名或者 IP 地址。
· User-Agent:瀏覽器或客戶(hù)端的詳細(xì)信息,例如,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36,告訴服務(wù)器客戶(hù)端的設(shè)備和瀏覽器信息。
· Accept:瀏覽器或客戶(hù)端能夠接受的內(nèi)容類(lèi)型,比如:text/html,application/xhtml+xml,image/webp,image/apng,*/*;q=0.8。
· Cookie:上次訪(fǎng)問(wèn)該網(wǎng)站時(shí),服務(wù)器設(shè)置的 Cookie,會(huì)攜帶一些會(huì)話(huà)信息。
例如,當(dāng)你訪(fǎng)問(wèn) example.com 時(shí),抓取到的請(qǐng)求頭可能像這樣:
GET / HTTP/1.1Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflateCookie: _f=iVBORw0KGgoAAAANSUhEUgAAADIAAAAUCAYAAADPym6a...
2. 響應(yīng)頭(Response Header)
當(dāng)服務(wù)器返回資源時(shí),響應(yīng)頭(Response Header)則會(huì)包含資源的相關(guān)信息。例如,常見(jiàn)的有:
· Content-Type:告訴你返回的資源是什么類(lèi)型,比如 text/html; charset=utf-8。
· Content-Encoding:資源的壓縮方式,比如 gzip。
· Set-Cookie:服務(wù)器設(shè)置的 Cookie,用于會(huì)話(huà)跟蹤,像:sid=5GB7bZyG5heANrXnQEUpqs4vDgx; domain=example.com; path=/; expires=Sat, 12 Aug 2017 11:54:48 GMT; httpOnly。
· Cache-Control:緩存控制信息,像 no-store 表示不緩存。
例如,服務(wù)器返回的響應(yīng)頭可能長(zhǎng)得像這樣:
HTTP/1.1 200 OKServer: nginxDate: Sat, 12 Aug 2017 07:54:45 GMTContent-Type: text/html; charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveCache-Control: no-storeSet-Cookie: sid=5GB7bZyG5heANrXnQEUpqs4vDgx; domain=example.com; path=/; expires=Sat, 12 Aug 2017 11:54:48 GMT; httpOnly
3. 其他常見(jiàn) Header
· Cache-Control & Expires:控制緩存,Cache-Control: max-age=10 表示該資源在10秒內(nèi)可以從緩存中讀取,不再去請(qǐng)求服務(wù)器。
· Last-Modified & If-Modified-Since:通過(guò)檢查資源的最后修改時(shí)間來(lái)決定是否需要重新下載資源,減少帶寬消耗。
例如,Cache-Control: no-cache 表示每次請(qǐng)求都需要重新驗(yàn)證,而 If-Modified-Since 則幫助判斷是否可以使用本地緩存。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫(kù)可供參考,大家可自行查閱,更多技術(shù)問(wèn)題,可以直接咨詢(xún)。同時(shí),藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢(xún)。
更多技術(shù)知識(shí),藍(lán)隊(duì)云期待與你一起探索。