HTTP請求特點、cookie及session來源、請求與會話的區別

一、HTTP特點與請求會話的區別

1、HTTP的特點

HTTP屬於TCP/IP協議簇中的應用層的協議,一共有5大特點

  1. 支持客戶/服務器模式

  2. 簡單快速

    HTTP協議中,客戶端向服務器發送請求時,只需發送請求方法和路徑。常用的請求方法有get、post方法等。請求方法規定了客戶端與服務器聯繫的類型,由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快

  3. 靈活

    超文本傳輸協議,允許傳輸任意類型的數據對象,由Content-Type標識

  4. 無連接

    限制每次連接只處理一個請求,當服務器處理完客戶的當次請求,並收到客戶的應答後就會斷開連接,節省傳輸時間

  5. 無狀態

    無狀態指的是對事務處理沒有記憶能力,當處理後續請求需要前面的信息時,這個時候就要重新傳輸,會導致每次連接傳送的數據量增大,每次請求要傳輸大量重複的內容信息。

2、HTTP協議無狀態特點的解決方案

  1. Cookie:客戶端保存機制

    可以將用戶的信息保存在客戶端上(比如網站的賬號密碼等),下次訪問的時候就不用再次登錄,也可以使用在購物車上

    cookie可以簡單的理解爲自己的門卡,客戶端拿着這個門卡,當要訪問服務器的時候,服務器就會"識別"這個門卡

  2. Session:服務器保存機制

    服務器會根據需求爲每一個客戶端設置一個唯一的 Session,將會話的重要信息保存在服務器的session上,同時將標示 Session 的 SessionId 傳遞給客戶端瀏覽器,瀏覽器將這個 SessionId 保存在內存中 Cookie中,當瀏覽器關閉後,這個 Cookie 就會被清掉,不存在於用戶的 Cookie 臨時文件。

    如果客戶端瀏覽器意外關閉,服務器保存的 Session 數據不是立即釋放,而是會再保留一段時間,此時數據還會存在,只要我們知道那個 SessionId,就可以繼續通過請求獲得此 Session 的信息。我們可以設置一個 Session 超時時間,一旦超過規定時間沒有客戶端請求時,服務器就會清除對應 SessionId 的 Session 信息。

    session是保存在服務器中的,服務器資源很寶貴,所以不要在session中存不必要的信息。

3、請求與會話的區別

  1. 會話指的是客戶端與服務器交互的一個時間段

  2. 請求指的是在會話的這個時間段裏,客戶端向服務器請求資源,請求一次資源就發一個請求

  3. 例子理解

    比如說你如外面吃飯,從進門坐下點菜到吃飯結賬完成交易走人這是一個時間段,所以可以理解爲一個會話。

    當你點餐的時候,先點了一份炒飯,這是向餐館請求了一次資源,所以是一次請求。過一會,吃着吃着口渴了,又要了一瓶水,這又是另外一個請求。

  4. cookie與session理解

    你今天很餓,你進餐館觀吃了很多東西,那最後怎麼算賬呢?

    1. 你(客戶端)自己記着吃了多少,走的時候給老闆(服務器)統一結算,這可以理解爲cookie
    2. 老闆在店門口記着每一個人點了多少,結賬的時候老闆給你說多錢,這可以理解爲Session。由於老闆就一個,很忙,這麼多人都要他去記賬,所以一些不重要的東西就不要交給老闆了,減輕老闆的壓力
  5. 關掉瀏覽器會話就結束了嗎

    不一定,當你吃完飯走出飯館還有手機忘了帶的可能,所以客戶端在請求完服務器之後也不是馬上就結束會話,一般瀏覽器會有一個超時等待時間,超過這個時間就會結束會話。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章