Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
點(diǎn)擊關(guān)注公眾號(hào),“技術(shù)干貨”及時(shí)達(dá)!
前言
如果你是一名開發(fā),肯定對(duì)請(qǐng)求頭和響應(yīng)頭這兩個(gè)詞聽上去特別有親切感,請(qǐng)求頭和響應(yīng)頭顧名思義就是請(qǐng)求和響應(yīng)相關(guān)的一些信息,但具體到請(qǐng)求頭和響應(yīng)頭里面的某個(gè)參數(shù)是啥意思可能很多人就不知道了。
就像最近問到一些面試者響應(yīng)頭里面最常見的Cache-Control和Content-Type所代表的是什么意思,很多都回答的支支吾吾的。真要說在項(xiàng)目中這種面試者也肯定能正常搬磚干活,但一看就是基本功非常差,如果有對(duì)比選擇的情況下非常容易被"pass"掉。
因此這篇文章主要對(duì)比較常用的請(qǐng)求頭和響應(yīng)頭進(jìn)行解釋,除了能應(yīng)對(duì)面試官外還能對(duì)知識(shí)面進(jìn)行擴(kuò)展。
什么是請(qǐng)求頭和響應(yīng)頭
簡(jiǎn)單說請(qǐng)求頭和響應(yīng)頭就是HTTP協(xié)議的組成部分,請(qǐng)求頭和響應(yīng)頭用于在客戶端(瀏覽器)和服務(wù)器之間攜帶傳遞額外的屬性,這些屬性內(nèi)容會(huì)用于控制HTTP請(qǐng)求和響應(yīng)的行為。
其中請(qǐng)求頭是客戶端帶給服務(wù)端,響應(yīng)頭是服務(wù)端帶給客戶端。
常見請(qǐng)求頭含義Accept:
「含義」:表示指定客戶端能夠接受哪些類型的內(nèi)容。
當(dāng)客戶端用接口請(qǐng)求時(shí),設(shè)置Accept會(huì)告訴服務(wù)器要返回合適的類型格式。
示例
accept: application/json, text/plain,
Accept-Charset
「含義」: 表示指定客戶端能夠接受哪些類型的字符集。
Accept-Charset: utf-8, iso-8859-1;q=0.5
Cookie
「含義」: 表示用于存儲(chǔ)用戶特有信息,讓用品去識(shí)別用戶的具體身份。通過Cookie傳遞用戶ID,讓服務(wù)器端識(shí)別用戶身份。
示例
Cookie: session=abPC9527; user=tty
Origin
「含義」: 表示跨域相關(guān)信息,用于設(shè)置CORS的請(qǐng)求。通過Origin 頭,防止陌生的域進(jìn)行請(qǐng)求。
示例
Origin: https://tty.com
Referer
「含義:」 表示當(dāng)前的請(qǐng)求是從哪個(gè)url鏈接過來的。
示例
Referer: https://tty.com/pageone
User-Agent
「含義」: 表示包含發(fā)起請(qǐng)求的用戶的一些代理信息,例如瀏覽器的具體版本和具體類型。
示例
User-Agent: Mozilla/3.0 (Windows NT 9.0; Win32; x64) AppleWebKit/517.36 (KHTML, like Gecko) Chrome/56.0.3029.110 Safari/517.3
If--Since
「含義」: 表示客戶端在上次獲取資源的具體時(shí)間。
示例
If-Modified-Since: Tue, 10 Oct 2021 11:01:01 GMT
Range
「含義」: 表示指定第一個(gè)字節(jié)到指定最后字節(jié)之間的位置,用于告訴服務(wù)器想取那個(gè)范圍的數(shù)據(jù)。
示例
Range: bytes=0-255
常見響應(yīng)頭含義Access-Control-Allow-Origin
「含義」: 表示用于配置CORS跨域相關(guān),指定允許訪問資源的域名,如果配置為*表示所有可訪問。
示例
Access-Control-Allow-Origin: *
Cache-Control
「含義」: 表示緩存機(jī)制的緩存策略。
示例------這里面試重點(diǎn)
Cache-Control:public // 響應(yīng)會(huì)被緩存
Cache-Control:must-revalidate // 指定條件下會(huì)緩存重用
Cache-Control:no-cache // 直接向服務(wù)器端請(qǐng)求最新資源,不緩存
Cache-Control:max-age=10 // 設(shè)置緩存的有效時(shí)間
Cache-Control:no-store // 在任何條件下,響應(yīng)都不會(huì)被緩存
Content-Length
「含義」: 表示當(dāng)前響應(yīng)體的具體大小,具體單位為字節(jié)。
示例
Content-Length: 9527
Content-Type
「含義:」 表示響應(yīng)體的具體數(shù)據(jù)格式是什么。
示例
Content-Type: application/json
Date
「含義」: 表示服務(wù)器開始對(duì)客戶端發(fā)送響應(yīng)的具體時(shí)間。
示例
Date: Tue, 10 Oct 2021 11:01:01 GMT
ETag
「含義」: 表示用于驗(yàn)證緩存,確保當(dāng)前的資源未被修改過。如果沒有更改過則返回304狀態(tài)碼,減少不必要傳輸。
示例
ETag: "1234952790pc"
「含義」: 表示用于重定向,指向一個(gè)新的URL。
示例
Location: https://tty.com/new-page
Set-Cookie
「含義」: 表示服務(wù)器通過這個(gè)請(qǐng)求頭把cookie帶到客戶端??蛻舳藭?huì)在后面請(qǐng)求中自動(dòng)將這cookie放在請(qǐng)求頭中。
示例
Set-Cookie: session=pc9527; Path=/; HttpOnly; Secure
Server
「含義」: 表示告訴這個(gè)服務(wù)器軟件的信息,例如版本。
示例
Server: Apache/1.4.38 (Ubuntu)
X-Powered-By
「含義」: 表示返回后端使用的具體框架或技術(shù)棧。
示例
X-Powered-By: Express
Content-
「含義」: 表示響應(yīng)體的編碼方式,例如gzip壓縮。
示例
Content-Encoding: gzip
Last-
「含義」: 表示資源最后被修改的具體時(shí)間。
示例
Last-Modified: Tue, 10 Oct 2021 11:00:00 GMT
Expires
「含義」: 跟緩存相關(guān),表示指定資源的過期時(shí)間,這個(gè)時(shí)間前都不過期。
示例
Expires: Wed, 21 Oct 2021 07:21:00 GMT
小結(jié)
這些內(nèi)容看似好像日常寫業(yè)務(wù)代碼沒咋用到,但其實(shí)是非常重要的,里面涉及到緩存、跨域和安全相關(guān)等等的內(nèi)容。
這些內(nèi)容足夠驗(yàn)證一個(gè)開發(fā)知識(shí)面是否足夠廣。
好啦,以上就是比較常見的響應(yīng)頭和請(qǐng)求頭的一些字段。如果哪里寫的不對(duì)或者有更好有建議歡迎指出。
點(diǎn)擊關(guān)注公眾號(hào),“技術(shù)干貨”及時(shí)達(dá)!
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。