【刷題】麪筋-網絡-Cookie和Session的區別

Cookie和Session

  • cookie:由於HTTP請求是無狀態的,它不會認識當前的用戶是誰。cookie的出現就爲了解決這個問題。用戶第一次請求服務器時,服務器會返回一些數據(cookie)給瀏覽器,瀏覽器保存到本地,等下一次再請求服務器時就會自動帶上本地的cookie數據,服務器拿到這個數據就知道該請求用戶是誰了。可是cookie只能存少許數據,不一樣瀏覽器存儲大小不一樣,但通常不超過4KB。web

  • session:session和cookie的做用相似,都是爲了保存用戶相關的信息,可是不一樣的是:session是保存在服務器上的,cookie保存在本地瀏覽器。保存在服務器上的session數據不容易被竊取,更加安全,但弊端是佔用了服務器的資源。面試

面試:

  • session與cookie的聯繫

    • Cookie和Session都是會話技術
    • session是須要藉助cookie才能正常工做的,若是客戶端徹底禁止cookie,session將失效。
  • Cookie和Session的區別

    • 一、Cookie和Session都是會話技術,Cookie是運行在客戶端,Session是運行在服務器端。瀏覽器

    • 二、Cookie有大小限制以及瀏覽器在存cookie的個數也有限制,Session是沒有大小限制tomcat

      • 單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。
      • session是沒有大小限制,和服務器的內存大小有關。
    • 三、Cookie有安全隱患,經過攔截或本地文件找獲得你的cookie後能夠進行攻擊。安全

      • 別人能夠分析存放在本地的cookie並進行cookie欺騙
      • 考慮到安全應當使用session。
    • 四、Session是保存在服務器端上會存在一段時間纔會消失,若是session過多會增長服務器的壓力。服務器

      • 考慮到減輕服務器性能壓力方面,應當使用cookie。
    • 五、session中保存的是對象,cookie中保存的是字符串。cookie

session原理

  • 一、session是保存在服務器端,理論上是沒有是沒有限制,只要你的內存夠大session

  • 二、瀏覽器第一次訪問服務器時會建立一個session對象並返回一個JSESSIONID=ID的值,性能

    • 建立一個Cookie對象key爲JSSIONID,value爲ID的值,將這個Cookie寫回瀏覽器
  • 三、瀏覽器在第二次訪問服務器的時候攜帶Cookie信息JSESSIONID=ID的值對象

    • 若是該JSESSIONID的session已經銷燬,那麼會從新建立一個新的session再返回一個新的JSESSIONID經過Cookie返回到瀏覽器
  • 四、針對一個web項目,一個瀏覽器是共享一個session,就算有兩個web項目部署在同一個服務器上,針對兩個項目的session是不一樣的

    • 如:你在tomcat上同時部署了兩個web項目,分別是web一、web2。當你在一個瀏覽器上同時訪問web1時建立的session是A1,訪問web2時建立的session是A2。後面你再屢次訪問web1使用的session仍是A1,屢次訪問web2時使用session就是A2
  • 五、session是基於Cookie技術實現,重啓瀏覽器後再次訪問原有的鏈接依然會建立一個新的session,

    • 由於Cookie在關閉瀏覽器後就會消失,可是原來服務器的Session還在,只有等到了銷燬的時間會自動銷燬
  • 六、若是瀏覽器端禁用了Cookie,那麼每次訪問都會建立一個新的Session,可是咱們能夠經過服務器端程序重寫URL便可,若是頁面多鏈接多,會增長沒必要要的工做量,那能夠強制讓你用戶開啓接收Cookie後再讓其訪問便可。

大白話

  • 當你一次訪問服務器的時候,服務器會在內存中開闢一塊空間,返回惟一一把打開該空間的鑰匙,再把這把鑰匙返回到瀏覽器。
  • 當你第二次訪問的時候瀏覽器會攜帶這把鑰匙到服務器端打開對應的空間,若是該空間已經銷燬又從新返回開闢一塊新的空間返回新的鑰匙到瀏覽器。

END

相關文章
相關標籤/搜索