面試必考之http狀態碼有哪些

2021-09-13 20:21:24 字數 1684 閱讀 6285

背景

http狀態碼有哪些,這也是乙個很高頻的面試問題。

一般大家都知道404頁面不存在,500伺服器錯誤,301重定向,302臨時重定向,200ok,401未授權啥的。

如果只是簡單的這樣答,可能只能讓面試官給你的答案打個五六十分,不足以給面試官留下良好的印象,為了展現自己良好的http知識,你或許可以重點介紹三個狀態碼及相關的知識,他們分別是304協商快取,101協議公升級,以及307hsts跳轉。

304協商快取

先從304協商快取開始吧。這是比較基礎的知識。相信我,只要你提起304協商快取,面試官一定會忍不住問你,什麼是協商快取?

這時就到了你展示一下自己豐富的瀏覽器快取知識的時候了。我一般會這麼答:瀏覽器快取分為強制快取和協商快取,優先讀取強制快取。

強制快取分為expires和cache-control,而expires是乙個特定的時間,是比較舊的標準和cache-control通常是乙個具體的時間長度,比較新,優先順序也比較高。

而協商快取包括etag和last-modified,last-modified的設定標準是資源的上次修改時間,而etag是為了應對資源修改時間可能很頻繁的情況出現的,是基於資源的內容計算出來的值,因此優先順序也較高。

協商快取與強制快取的區別在於強制快取不需要訪問伺服器,返回結果是200,協商快取需要訪問伺服器,如果命中快取的話,返回結果是304。

101協議公升級

主要用於websocket,也可以用於http2的公升級。

websocket的特點和功效不細說,大家都很熟了。

當然這時候我們可能要應對一下面試官接下來的追問:到底https,http,http2以及它的原形spdy有什麼區別,又分別有什麼優點和不足,他們的建立連線分別又有著什麼環節,這些知識就需要讀者自己去充分搜尋查詢了。

307 hsts跳轉

這個比較高階,原本的用法是用於讓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的快取機制

](http2講解

http,http2.0,spdy,https你應該知道的一些事

你所不知道的 hsts

關於啟用 https 的一些經驗分享(一)

HTTP狀態碼有哪些

常用得 http狀態碼 200 請求成功 301 重定向 404 未找到該檔案 500 內部伺服器錯誤了解一下 100 客戶端應當繼續傳送請求 201 請求已經被實現,而且有乙個新的資源已經依據請求的需要而建立,且其 uri 已經隨location 頭資訊返回。202 伺服器已經實現,但是並沒有處理...

HTTP請求有哪些,以及HTTP狀態碼

一 http請求 1.get獲取資源 請求指定頁面資訊,並返回實體主體 2.head獲取報文首部和get方法類似,但是只返回報文首部 主要用於確認url的有效性已經資源更新日期時間等。3.post提交資料進行處理請求 提交表單 上傳檔案 有可能導致新的資源的建立或原有資源的 修改4.put上傳資源 ...

http有哪些常見的狀態碼?

1 2xx 成功 200 ok 從客戶端傳送的請求在伺服器被正常處理了 204 no content 伺服器接收的請求已成功處理,但在返回的的響應報文中不含實體的主體部分 206 partial content 該狀態表示客戶端進行了範圍請求,而伺服器成功執行了這部分的get請求 2 3xx重定向 ...