、狀態(tài)碼中文
100:“繼續(xù)”,
101:“交換協(xié)議”,
200:“好的”,
201:“已創(chuàng)建”,
202:“接受”,
203:“非權(quán)威信息”,
204:“無內(nèi)容”,
205:“重置內(nèi)容”,
206:“部分內(nèi)容”,
300:“多選”,
301:“永久移動(dòng)”,
302:“找到”,
303:“見其他”,
304:“未修改”,
305:“使用代理”,
307:“臨時(shí)重定向”,
400:“錯(cuò)誤請(qǐng)求”,
401:“未授權(quán)”,
402:“需要支付”,
403:“禁止”,
404:“未找到”,
405:“方法不允許”,
406:“不可接受”,
407:“需要代理驗(yàn)證”,
408:“請(qǐng)求超時(shí)”,
409:“沖突”,
410:“消失”,
411:“長(zhǎng)度要求”,
412:“前置失敗”,
413:“請(qǐng)求實(shí)體太大”,
414:“請(qǐng)求URI太長(zhǎng)”,
415:“不支持的媒體類型”,
416:“請(qǐng)求的范圍不可滿足”,
417:“期望失敗”,
422:“不可處理實(shí)體”,
500:“內(nèi)部服務(wù)器錯(cuò)誤”,
501:“未實(shí)現(xiàn)”,
502:“壞網(wǎng)關(guān)”,
503:“服務(wù)不可用”,
504:“網(wǎng)關(guān)超時(shí)”,
505:“不支持HTTP版本”
二、狀態(tài)碼英文
108:"Continue"
191:"Switching Protocols"208OK
201:"Created"202:"Accepted"
203:"Non-Authoritative Information"
284:"No Content"
205"Reset Content"
206"Partial Content"398:"Multiple Choice"
301:"Moved Permanently"
392"Found"
303:"See Other"
384:"Not Modified",
305:"Use Proxy"
307:"Temporary Redirect"
408:"Bad Request"401:"Unauthorized"
402:"Payment Required"
403:"Forbidden"
484:"Not Found"
405:"Method Not Allowed"
486:"Not Acceptable"
497:"Proxy Authentication Required",
408:"Request Timeout"
409:"Conflict"
410:"Gone"
411:"Length Required".
412:"precondition Failed"
413:"Request Entity Too Large",
414:Request-URI Too Long",
415"Unsupported edia Type".
416"Requested Range Not Satisfiable"
417Expectation Failed"
422:Unprocessable Entity"500"Internal Server Error"
501:"Not Implemented"
502"Bad Gateway"
503:Service Unavailable".
504:Gateway Timeout"
505:"HTTP Version Not Supported"
三、HTTP Responses Header 響應(yīng)頭
Accept-Ranges 表明服務(wù)器是否支持指定范圍請(qǐng)求及哪種類型的分段請(qǐng)求 Accept-Ranges:bytes
Age 從原始服務(wù)器到代理緩存形成的估算時(shí)間(以秒計(jì),非負(fù))Age:12
Allow 對(duì)某網(wǎng)絡(luò)資源的有效的請(qǐng)求行為,不允許則返回405 Allow:GET, HEAD
Cache-Control 告訴所有的緩存機(jī)制是否可以緩存及哪種類型 Cache-Control:no-cache
Content-Encodingweb服務(wù)器支持的返回內(nèi)容壓縮編碼類型。 Content-Encoding:
Content-Language 響應(yīng)體的語言Content-Language:en,zh
Content-Length 響應(yīng)體的長(zhǎng)度Content-Length: 348
Content-Location 請(qǐng)求資源可替代的備用的另一地址 Content-Location:/index.html
Content-MD5 返回資源的MD5校驗(yàn)值 Content-MD5:Q2hlY2sgSW50ZWdyaXR5IQ==Content-Range 在整個(gè)返回體中本部分的字節(jié)位置Content-Range:bytes 21010-47021/47022
Content-Type 返回內(nèi)容的MIME類型 Content-Type:text/html; charset=utf-8
Date 原始服務(wù)器消息發(fā)出的時(shí)間 Date:Tue, 15 Nov 2010 08:12:31 GMT
ETag 請(qǐng)求變量的實(shí)體標(biāo)簽的當(dāng)前值 ETag:“737060cd8c284d8af7ad3082f209582d”
Expires 響應(yīng)過期的日期和時(shí)間 Expires: Thu, 01 Dec2010 16:00:00 GMT
Last-Modified 請(qǐng)求資源的最后修改時(shí)間 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 用來重定向接收方到非請(qǐng)求URL的位置來完成請(qǐng)求或標(biāo)識(shí)新的資源 Location:http://www.zcmhi.com/archives/94.html
Pragma 包括實(shí)現(xiàn)特定的指令,它可應(yīng)用到響應(yīng)鏈上的任何接收方 Pragma:no-cache
Proxy-Authenticate 它指出認(rèn)證方案和可應(yīng)用到代理的該URL上的參數(shù) Proxy-Authenticate:Basic
refresh 應(yīng)用于重定向或一個(gè)新的資源被創(chuàng)造,在5秒之后重定向(由網(wǎng)景提出,被大部分瀏覽器支持)Refresh: 5;url=http://www.zcmhi.com/archives/94.html
Retry-After 如果實(shí)體暫時(shí)不可取,通知客戶端在指定時(shí)間之后再次嘗試 Retry-After:120
Server web服務(wù)器軟件名稱 Server: Apache/1.3.27(Unix) (Red-Hat/Linux)
Set-Cookie 設(shè)置HttpbCookie Set-Cookie:UserID=JohnDoe; Max-Age=3600; Version=1
Trailer 指出頭域在分塊傳輸編碼的尾部存在 Trailer:Max-Forwards
Transfer-Encoding 文件傳輸編碼 Transfer-Encoding:chunked
Vary 告訴下游代理是使用緩存響應(yīng)還是從原始服務(wù)器請(qǐng)求 Vary:*
Via 告知代理客戶端響應(yīng)是通過哪里發(fā)送的 Via:1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 警告實(shí)體可能存在的問題 Warning: 199 Miscellaneous warning
WWW-Authenticate 表明客戶端請(qǐng)求實(shí)體應(yīng)該使用的授權(quán)方案 WWW-Authenticate:Basic
Access-Control-Allow-Origin 跨域 *
四、HTTP Request Header 請(qǐng)求頭
題
響應(yīng)頭是在服務(wù)器發(fā)送頁面的HTML代碼之前,從服務(wù)器發(fā)送到瀏覽器。這些頭信息包含著關(guān)于下列內(nèi)容的有用信息:服務(wù)器希望的通信方式,頁面類型,以及諸如截止日期和內(nèi)容類型這樣的元數(shù)據(jù)。響應(yīng)是獲取Web應(yīng)用的先關(guān)信息的絕佳來源,對(duì)于我們想通過它實(shí)現(xiàn)的特殊功能來說,尤其如此。
響應(yīng)頭是攻擊者用于查找應(yīng)用特有信息的地方。與你的Web服務(wù)器和平臺(tái)相關(guān)的信息將會(huì)作為標(biāo)準(zhǔn)請(qǐng)求的一部分被泄露出去。
解決方案
正如3.3節(jié)中所提到的,你可以在請(qǐng)求頭旁邊找到響應(yīng)頭,也可以通過代理來找到頭信息,比如WebScarb。我們將利用這項(xiàng)任務(wù)來向你介紹TamperData,它是一個(gè)方便的工具,可以用在這項(xiàng)任務(wù)和其他幾項(xiàng)任務(wù)中。
按照2.2節(jié),安裝TamperData。它的安裝方法與大多數(shù)附加組件相同。
從“工具”菜單中打開TamperData,然后瀏覽到某個(gè)頁面。在TamperData窗口中,你會(huì)發(fā)現(xiàn)它列舉出了訪問過的頁面,這與WebScarab和FireBug是一樣的。單擊某個(gè)頁面,就會(huì)顯示出請(qǐng)求頭和響應(yīng)頭,如圖3-12所示。
討論
響應(yīng)頭和響應(yīng)本身之間存在著差別。響應(yīng)頭描述響應(yīng),它們是元數(shù)據(jù)。例如,響應(yīng)頭通常會(huì)包含以下內(nèi)容:
狀態(tài)(Status)
內(nèi)容類型(Content-Type)
內(nèi)容編碼(Content-Encoding)
內(nèi)容長(zhǎng)度(Content-Length)
截止日期(Expire)
追后修改時(shí)間(Last-Modified)
多年來,響應(yīng)頭有所演化,因此,最初的規(guī)范(可以從http:///http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html訪問)只對(duì)其中某些項(xiàng)(比如狀態(tài))而言是正確的。
另外,有些響應(yīng)頭會(huì)顯示。服務(wù)器軟件以及響應(yīng)發(fā)出的日期和時(shí)間。如果你允許Internet上的每個(gè)人看到你正在使用的服務(wù)器和平臺(tái),那么現(xiàn)在就應(yīng)該確保你安裝了最新的補(bǔ)丁,并阻止了一切已知的漏洞。
請(qǐng)?zhí)貏e注意Content-Type頭信息。大多數(shù)時(shí)間它只不過是像“text/html;charset=UFT-8”這樣的內(nèi)容,表示正常的HTML響應(yīng)和編碼。不過,它也可能引用外部應(yīng)用或引起異常的瀏覽器行為,而這些異常之處正式攻擊可能悄悄潛入的地方。
例如,已知有些舊版的PDF閱讀器會(huì)執(zhí)行通過查詢字符串傳入的JavaScript(詳細(xì)情況請(qǐng)?jiān)L問http://www.adobe.com/support/security/advisories/apsa07-01.html)。如果你的應(yīng)用提供PDF,那么它是直接將Content-Type設(shè)置為applicant/pdf嗎?又或者它設(shè)置了Content-Disposition頭信息,要求用戶先下載PDF,從而避免了任何JavaScript趁虛而入?
動(dòng)態(tài)重定向是另一項(xiàng)危險(xiǎn)的特性,因?yàn)樗鼈兛赡軙?huì)被攻擊者用來將惡意網(wǎng)站的鏈接偽裝成你的網(wǎng)站的鏈接,從而濫用了用戶對(duì)你的網(wǎng)站的信任。作為鏈接,動(dòng)態(tài)重定向通常具有如下形式:
http://www.example.com/reirect.php?url=http://ha.ckers.org
可以看到,這些細(xì)節(jié)可能很難對(duì)付。如果你的應(yīng)用使用某種特殊的頭信息來處理文件上傳、下載、重定向或任何其他事務(wù),那么請(qǐng)確保研究了所有具體的安全防范措施,因?yàn)閷?shí)際的危險(xiǎn)要比這里所能列出的還要多。
新的響應(yīng)頭仍在不斷地被開發(fā)出來。TrackBack、PingBack和RefBack是一種新的、通常被稱為L(zhǎng)inkBack的Web功能的相互競(jìng)爭(zhēng)的標(biāo)準(zhǔn)。這些LinkBack提供了一種雙向的鏈接功能。它們因?yàn)橛狭水?dāng)前的博客熱而備受歡迎。
例如,如果Fred從自己的博客鏈接到Wilma的博客,那么他們的博客托管服務(wù)可以使用某種標(biāo)準(zhǔn)進(jìn)行通信,于是Wilma的博客將顯示Fred鏈接到她的博客。HTTP頭可幫助識(shí)別使用的是哪些標(biāo)準(zhǔn),并傳送鏈接信息。
搜索微信公眾號(hào):TestingStudio霍格沃茲的干貨都很硬核
了提升瀏覽器加載頁面資源的性能,對(duì)于js、css、圖片等靜態(tài)資源,web服務(wù)器往往會(huì)通過Cache-Control、ETag/If-None-Match、Last-Modified/If-Modified-Since、Pragma、Expires、Date、Age等頭部來控制、管理、檢測(cè)這類資源對(duì)緩存機(jī)制的使用情況。同時(shí),為了使新版本的js、css等資源立即生效,一種比較通行的做法是為js、css這些文件名添加一個(gè)hash值。這樣當(dāng)js、css內(nèi)容發(fā)生變化時(shí),瀏覽器獲取的是不同的js、css文件。在這種情況下,舊版本的index.html文件可能是這樣的:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>測(cè)試</title>
<meta http-equiv=X-UA-Compatible content="IE=Edge">
<meta name=viewport content="width=device-width,minimum-scale=1,maximum-scale=1">
<link href=/static/css/main.4656e35c1e8d4345f5bf.css rel=stylesheet>
</head>
<style>
html, body {
width: 100%;
}
</style>
<body>
<div id=newMain></div>
<script type=text/javascript src=/static/js/main-4656e35c1e8d4345f5bf.js></script>
</body>
</html>
當(dāng)項(xiàng)目的js、css內(nèi)容發(fā)生了變化時(shí),新版本的index.html文件內(nèi)容變成這樣的(js和css文件名攜帶了新的hash值1711528240049):
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>測(cè)試</title>
<meta http-equiv=X-UA-Compatible content="IE=Edge">
<meta name=viewport content="width=device-width,minimum-scale=1,maximum-scale=1">
<link href=/static/css/main.1711528240049.css rel=stylesheet>
</head>
<style>
html, body {
width: 100%;
}
</style>
<body>
<div id=newMain></div>
<script type=text/javascript src=/static/js/main-1711528240049.js></script>
</body>
</html>
因?yàn)閕ndex.html文件一般會(huì)設(shè)置為不緩存,這樣用戶每次訪問首頁時(shí),都會(huì)從web服務(wù)器重新獲取index.html,然后根據(jù)index.html中的資源文件是否變化,從而決定是否使用緩存的文件。這樣既能讓用戶立即獲取最新的js、css等靜態(tài)資源文件,又能充分地使用緩存。index.html的響應(yīng)頭大概長(zhǎng)這樣:
但是為了保證系統(tǒng)的高可用,web后端往往由多個(gè)實(shí)例提供服務(wù),用戶請(qǐng)求會(huì)在多個(gè)服務(wù)實(shí)例間進(jìn)行負(fù)載均衡。而系統(tǒng)升級(jí)過程中,會(huì)存在多個(gè)版本共存的現(xiàn)象。這時(shí),如果用戶從舊版本實(shí)例上獲取了index.html文件,然后再去獲取舊版本的js、css文件(main-4656e35c1e8d4345f5bf.js和main.4656e35c1e8d4345f5bf.css),但是請(qǐng)求卻分發(fā)到了新版本服務(wù)實(shí)例上,這時(shí)因?yàn)樾掳姹痉?wù)實(shí)例只有main-1711528240049.js和main.1711528240049.css文件,就會(huì)導(dǎo)致訪問失敗。反過來,如果從新版本實(shí)例上獲取了index.html文件,在請(qǐng)求相應(yīng)的js、css文件時(shí),也可能被分發(fā)到舊版本實(shí)例上,也導(dǎo)致訪問失敗。
解決方法:
1)首先,改造一下index.html文件中引用js、css等靜態(tài)資源的路徑,添加一個(gè)版本號(hào),如v1、v2,這樣index.html文件對(duì)js、css的引用變?yōu)椋?/p>
<link href=/static/v1/css/main.1711528240049.css rel=stylesheet>
<script type=text/javascript src=/static/v1/js/main-1711528240049.js></script>
2)使用灰度發(fā)布策略升級(jí)系統(tǒng),具體步驟如下(假設(shè)系統(tǒng)包含A、B兩個(gè)服務(wù)實(shí)例)
作者:movee
鏈接:https://juejin.cn/post/7353069220827856946
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。