筆試 面試乾貨 http協議

2021-10-07 22:56:03 字數 2250 閱讀 2076

session和cookie

通過 tcp/ip , 我們已經知道目前資料能從客戶端程序經過路徑選擇跨網路傳送到伺服器端程序[ ip+port ],可

是,僅僅把資料從a點傳送到b點就完了嗎?這就好比,在**上買了一部手機,賣家[ 客戶端 ]把手機通過順豐[ 傳送 +路徑選擇 ] 送到買家

[ 伺服器 ] 手裡就完了嗎?當然不是,買家還要使用這款產品,還要在使用之後,給賣家打分評 論。所以,我們把資料從a端傳送到b端,

tcp/ip 解決的是順豐的功能,而兩端還要對資料進行加工處理或者使用, 所以我們還需要一層協議,不關心通訊細節,關心應用細節!

這層協議叫做應用層協議。而應用是有不同的場景的,所以應用層協議是有不同種類的,其中經典協議之一的http 就是其中的佼佼者。那麼, http

是解決什麼應用場景呢? 早期使用者,上網使用瀏覽器來進行上網,而用瀏覽器上網閱讀資訊,常見的是檢視各種網頁【其實也是檔案資料, 不過是一系列的

html 文件,當然還有其他資源如, css , js 等】,而要把網頁檔案資訊通過網路傳送到客戶

端,或者把使用者資料上傳到伺服器,就需要 http 協議【當然,http作用不限於此】

雖然我們說, 應用層協議是我們程式猿自己定的. 但實際上, 已經有大佬們定義了一些現成的, 又非常好用的應用層協議, 供我們直接參考使用. http(超文字傳輸協議)就 是其中之一.

平時我們俗稱的 「**」 其實就是說的 url

像 / ? : 等這樣的字元, 已經被url當做特殊意義理解了. 因此這些字元不能隨意出現. 比如, 某個引數中需要帶有這些特殊字元, 就必須先對特殊字元進行轉義. 轉義的規則如下: 將需要轉碼的字元轉為16進製制,然後從右到左,取4位(不足4位直接處理),每2位做一位,前面加上%,編碼成%xy 格式

例如:

「+」 被轉義成了 「%2b」

urldecode就是urlencode的逆過程

http請求

http響應

其中常用的就是get方法和post方法.

常見的狀態碼, 比如:200(ok),404(notfound),403(forbidden), 302(redirect, 重定向), 504(bad gateway)

http 是乙個無狀態協議, 就是說這一次請求和上一次請求是沒有任何關係的,互不認識的,沒有關聯的。這種無狀態 的的好處是快速。壞處是需要進行使用者狀態保持的場景時[比如,登陸狀態下進行頁面跳轉,或者使用者資訊多頁面共 享等場景],必須使用一些方式或者手段比如: session 和 cookie

將使用者敏感資訊放到本地瀏覽器中,能解決一定的問題,但是又引進了新的安全問題,一旦cookie丟失,使用者資訊 洩露,也很容易造成跨站攻擊,所以有了另一種解決方法,將使用者敏感資訊儲存至伺服器,而伺服器本身採用md5算 法或相關演算法生成唯一值(session id),將該值儲存值客戶端瀏覽器,隨後,客戶端的後續請求,瀏覽器都會自動 攜帶該id,進而再在伺服器端認證,進而達到狀態保持的效果

兩者有什麼區別呢?

要使用session,其實還是需要使用cookie機制來儲存session id的,那麼萬一在 客戶端cookie機制被禁掉了,那session貌似也就無法使用了?其實替代方法是有的

HTTP協議面試

http1.0所做的優化 http1.0 http1.1的區別 1快取處理不同。1.0只是用乙個標頭檔案的快取策略,1.1引入了更多 2頻寬優化及網路連線的使用 1.0存在浪費頻寬,不支援斷點續傳功能。1.1允許只請求資源的部分 3host頭處理 1.0中每台伺服器繫結唯一的ip位址。1.1請求訊息...

http協議 面試常見題

1.什麼是http協議?2.web客戶端是什麼?3.web服務端是什麼?4.什麼是資源?5.mime型別是什麼?6.什麼是uri?7.什麼是url?8.什麼是urn?9.常見的http方法有哪些?10.常見的狀態碼200,206,302,304,404,501的含義?11.什麼是報文?12.http...

HTTP協議面試題

1 說一下什麼是http協議?對器客戶端和 伺服器端之間資料傳輸的格式規範,格式簡稱為 超文字傳輸協議 2 什麼是http協議無狀態協議?怎麼解決http協議無狀態協議?曾經去某創業公司問到 3 說一下http協議中302狀態 阿里經常問 4 http協議有什麼組成?請求報文包含三部分 響應報文包含...