開發(fā)總是離不開狀態(tài)碼的啦~這里整理一下,僅作個人筆記占哟。
http狀態(tài)碼是表示服務(wù)器對請求的響應(yīng)狀態(tài)
歸類
1:這類響應(yīng)是臨時響應(yīng),只包含狀態(tài)行和某些可選的響應(yīng)頭信息,并以空行結(jié)束
2:表示請求成功
3:表示重定向
4:表示客戶端錯誤
5**:表示服務(wù)器端錯誤
詳細的
100(continue)耳鸯,客戶端應(yīng)當繼續(xù)發(fā)送請求。這個臨時響應(yīng)是用來通知客戶端它的部分請求已經(jīng)被服務(wù)器接收
101(Switching Protocols)切換協(xié)議膀曾。服務(wù)器根據(jù)客戶端的請求切換協(xié)議县爬。只能切換到更高級的協(xié)議,例如添谊,切換到HTTP的新版本協(xié)議
200(OK)财喳,表示請求成功,請求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回斩狱。
202(Accepted)耳高,服務(wù)器已接受請求,但尚未處理喊废。
203 (Non-Authoritative Information)非授權(quán)信息祝高。請求成功。但返回的meta信息不在原始的服務(wù)器污筷,而是一個副本
204(No-Content)工闺,服務(wù)器成功處理了請求乍赫,但不需要返回任何實體內(nèi)容
205(Reset-Content),服務(wù)器成功處理了請求陆蟆,且沒有返回任何內(nèi)容雷厂。但是與204響應(yīng)不同,返回此狀態(tài)碼的響應(yīng)要求請求者重置文檔視圖叠殷。該響應(yīng)主要是被用于接受用戶輸入后改鲫,立即重置表單,以便用戶能夠輕松地開始另一次輸入林束。
206(Partial-Content)像棘,服務(wù)器已經(jīng)成功處理了部分 GET 請求。
301(Moved-Permanently)壶冒,永久性重定向
302(Moved-Temporarily)缕题,暫時性重定向
304(Not-Modified),瀏覽器端緩存的資源依然有效
305 Use Proxy 使用代理胖腾。所請求的資源必須通過代理訪問
306 Unused 已經(jīng)被廢棄的HTTP狀態(tài)碼
307 Temporary Redirect 臨時重定向烟零。與302類似。使用GET請求重定向
400(Bad-Reques)咸作,請求有誤锨阿,當前請求無法被服務(wù)器理解。
401(Unauthorized)记罚,當前請求需要用戶驗證墅诡。
403(Forbidden),服務(wù)器已經(jīng)理解請求桐智,但是拒絕執(zhí)行它书斜。
404(Not-Found),請求的資源沒有被找到
405 Method Not Allowed 客戶端請求中的方法被禁止
406 Not Acceptable 服務(wù)器無法根據(jù)客戶端請求的內(nèi)容特性完成請求
500(Interval Server Error)酵使,服務(wù)器內(nèi)部錯誤
502(Bad GateWay),網(wǎng)關(guān)出錯
503(Service Unavailable)焙糟,由于臨時的服務(wù)器維護或者過載口渔,服務(wù)器當前無法處理請求。
504(Gateway Timeout)穿撮,作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請求時缺脉,未能及時從上游服務(wù)器(URI標識出的服務(wù)器,例如HTTP悦穿、FTP攻礼、LDAP)或者輔助服務(wù)器(例如DNS)收到響應(yīng)。
常用的需要記一下的狀態(tài)碼:
200 OK 服務(wù)器成功處理了請求(這個是我們見到最多的)
304 Not Modified:服務(wù)端的資源與客戶端上一次請求的一致栗柒,不需要重新傳輸礁扮,客戶端使用本地緩存的即可
400 Bad Request:用于告訴客戶端它發(fā)送了一個錯誤的請求
404 Not Found(頁面丟失)未找到資源
500 Internal Server Error:服務(wù)器內(nèi)部出現(xiàn)了錯誤
501 Internal Server Error服務(wù)器遇到一個錯誤,使其無法對請求提供服務(wù)。
關(guān)于304和瀏覽器緩存:
瀏覽器的資源請求太伊,如果使用了緩存基本上是兩種情況
status code: 200 ok ( from cache )
status code: 304 Not Modified
第一種方式是不向瀏覽器發(fā)送請求雇锡,直接使用本地緩存文件。第二種方式僚焦,瀏覽器雖然發(fā)現(xiàn)了本地有該資源的緩存锰提,但是不確定是否是最新的,于是想服務(wù)器詢問芳悲,若服務(wù)器認為瀏覽器的緩存版本還可用立肘,那么便會返回304。
這樣做下來名扛,會執(zhí)行一次304請求谅年,執(zhí)行一次200請求,為了減少請求次數(shù)罢洲,可以選擇設(shè)置緩存踢故。
有幾種方法。
一種是僅在Cache-Control設(shè)置max-age惹苗。
例如Cache-control: max-age=1800表明cache的時間是30分鐘殿较,只使用這樣一個聲明就可以使瀏覽器能夠?qū)⑦@個HTTP響應(yīng)的內(nèi)容寫入臨時目錄做cache。
瀏覽器第一次請求某資源桩蓉,查詢文件目錄沒有該cache內(nèi)容淋纲,于是發(fā)送請求到服務(wù)器,服務(wù)器接受請求發(fā)送資源的同時設(shè)置max-age的時間院究。第二次請求時檢查時間洽瞬,如果沒有過期,就直接調(diào)用cache緩存的資源业汰。
還有一種是設(shè)置max-age和Last-Modified伙窃。
發(fā)送請求時檢查到有緩存,這時去檢查max-age样漆,如果還沒過期为障,則使用緩存內(nèi)容。
如果過期了放祟,那么檢查發(fā)現(xiàn)資源帶有Last-Modified鳍怨,于是在請求包中帶上If-Modified-Since發(fā)送給服務(wù)器,服務(wù)器于是對比資源最新修改的時間與請求的時間跪妥,如果資源被修改的時間比請求包的時間新鞋喇,那么說明資源已經(jīng)更新,重新發(fā)送新的資源給客戶端眉撵,狀態(tài)200.反之告訴請求的客戶端:我這沒變侦香,你繼續(xù)用緩存落塑。