你們都知道cookie是存在客戶端,session存在服務器端。那麼客戶端具體是怎樣獲取cookie信息的呢?php
更好的閱讀體驗可訪問 這裏。web
實驗環境:xampp + Thinkphp5 + Firefox瀏覽器
首先清除瀏覽器的cookie緩存和服務器端的session文件。緩存
注:查看session存放位置的php代碼爲:服務器
<?php //~ 當前session存放位置 $sessionpath = session_save_path(); echo $sessionpath;
如今,瀏覽器既沒有cookie信息,服務器端也不存在session文件。cookie
在瀏覽器右鍵查看元素,開始訪問搭建的網站。
網絡
點擊網絡=》點擊要查看的包=》可在響應頭部發現Set-Cookie
字段,也就是這時,服務器端返回了咱們cookie。咱們的瀏覽器也就存儲了該cookie信息。之後咱們再次訪問該網站時,都會帶着這個cookie信息。session
那麼如今服務器端的session信息是怎麼個狀況呢?
網站
能夠發現,此時已經生成了不少文件。其中最重要的文件也就是標記的那個,是服務器爲咱們生成的session文件(sess_後的內容與服務器端返回給咱們的cookie一致)。可是由於咱們尚未登錄,因此此時文件內容爲空,大小爲0KB。3d
而後咱們登錄。再次去查看session文件。
發現文件大小已經變爲了1KB。其中存儲着咱們的登錄信息。(文件的內容與咱們具體代碼的實現相關)
之後當咱們訪問該網站時,就會在請求頭部帶上cookie信息。像這樣:
而後服務器端接收到cookie信息,就會去查找session文件的內容,若是發現文件記錄了你已經登錄過,那麼就不用再次登錄。
至此,session的做用也就體現了出來。
能夠發現session與cookie是密不可分的,任一方出了問題,都不能發揮出它的做用。例如:若是瀏覽器端清除了cookie信息,或者服務器端的session文件被刪除,那麼就須要從新登錄,從新生成互相匹配的cookie和session纔可達到用戶免登錄的效果。一樣,若是瀏覽器端禁用了cookie,該目的也不能達到。