http狀態碼有哪些,這也是一個很高頻的面試問題。
通常你們都知道404頁面不存在,500服務器錯誤,301重定向,302臨時重定向,200ok,401未受權啥的。html
若是隻是簡單的這樣答,可能只能讓面試官給你的答案打個五六十分,不足以給面試官留下良好的印象,爲了展示本身良好的http知識,你或許能夠重點介紹三個狀態碼及相關的知識,他們分別是304協商緩存,101協議升級,以及307hsts跳轉。前端
先從304協商緩存開始吧。這是比較基礎的知識。相信我,只要你提起304協商緩存,面試官必定會忍不住問你,什麼是協商緩存?git
這時就到了你展現一下本身豐富的瀏覽器緩存知識的時候了。我通常會這麼答:瀏覽器緩存分爲強制緩存和協商緩存,優先讀取強制緩存。github
強制緩存分爲expires和cache-control,而expires是一個特定的時間,是比較舊的標準和cache-control一般是一個具體的時間長度,比較新,優先級也比較高。web
而協商緩存包括etag和last-modified,last-modified的設置標準是資源的上次修改時間,而etag是爲了應對資源修改時間可能很頻繁的狀況出現的,是基於資源的內容計算出來的值,所以優先級也較高。面試
協商緩存與強制緩存的區別在於強制緩存不須要訪問服務器,返回結果是200,協商緩存須要訪問服務器,若是命中緩存的話,返回結果是304。瀏覽器
主要用於websocket,也能夠用於http2的升級。緩存
websocket的特色和功效不細說,你們都很熟了。安全
http2好處多多,通常說出支持單個鏈接屢次請求,二進制,壓縮頭部,服務器推送等特徵面試官就比較知足了。具體瞭解也是自行谷歌百度,這裏也是不細說。服務器
固然這時候咱們可能要應對一下面試官接下來的追問:到底https,http,http2以及它的原形spdy有什麼區別,又分別有什麼優勢和不足,他們的創建鏈接分別又有着什麼環節,這些知識就須要讀者本身去充分搜索查詢了。
這個比較高端,本來的用法是用於讓post請求的跳轉去新的post請求,但也用於hsts跳轉。
hsts全稱HTTP嚴格傳輸安全(HTTP Strict Transport Security,縮寫:HSTS),功能是要求瀏覽器下次訪問該站點時使用https來訪問,而再也不須要先是http再轉https。這樣能夠避免ssl剝離攻擊,即攻擊者在用戶使用http訪問的過程當中進行攻擊,對服務器冒充本身是用戶,在攻擊者和服務器中使用https訪問,在用戶和服務器中使用http訪問。
具體使用方法是在服務器響應頭中添加 Strict-Transport-Security,能夠設置 max-age
固然,提到了ssl剝離攻擊,你必定很感興趣還有什麼方法能夠對號稱安全的https進行攻擊呢?我這裏瞭解到的有ssl劫持攻擊,大概就是信任第三方的安全證書,這點被利用於代理軟件監聽https。若是還有更多的,歡迎補充。
僅僅三個狀態碼,均可以牽涉到如此豐富的知識,對於狀態碼,咱們不能只是片面的去背誦狀態碼及對應的含義,要去主動挖掘,深刻,藉助http狀態碼來創建本身的網絡體系。
留一個課後做業:301和302有什麼區別?分別適用於什麼場景?你還會只去記一個是永久重定向,一個是臨時重定向嗎?
本文章爲前端進階系列的一部分,
歡迎關注和star本博客或是關注個人github
知道大家很懶,幫大家搜索好了相關資料
[淺談瀏覽器http的緩存機制
](http://www.cnblogs.com/vajoy/...