不清不楚的Session和Cookie
會話(Session)跟蹤是Web程式中常用的技術,用來跟蹤使用者的整個會話。常用的會話跟蹤技術是Cookie與Session。Cookie通過在客戶端記錄資訊確定使用者身份,Session通過在伺服器端記錄資訊確定使用者身份。
Cookie機制
Cookie技術是客戶端的解決方案,Cookie就是由伺服器發給客戶端的特殊資訊,而這些資訊以文字檔案的方式存放在客戶端,然後客戶端每次向伺服器傳送請求的時候都會帶上這些特殊的資訊。
客戶端傳送一個http請求到伺服器端 伺服器端傳送一個http響應到客戶端,其中包含Set-Cookie頭部 客戶端傳送一個http請求到伺服器端,其中包含Cookie頭部 伺服器端傳送一個http響應到客戶端
Session機制
除了使用Cookie,Web應用程式中還經常使用Session來記錄客戶端狀態。Session是伺服器端使用的一種記錄客戶端狀態的機制,使用上比Cookie簡單一些,相應的也增加了伺服器的儲存壓力。Session技術是服務端的解決方案,它是通過伺服器來保持狀態的。
什麼是Cookie
Cookie意為“甜餅”,是由W3C組織提出,最早由Netscape社群發展的一種機制。目前Cookie已經成為標準,所有的主流瀏覽器如IE、Netscape、Firefox、Opera等都支援Cookie。
由於HTTP是一種無狀態的協議,伺服器單從網路連線上無從知道客戶身份。怎麼辦呢?就給客戶端們頒發一個通行證吧,每人一個,無論誰訪問都必須攜帶自己通行證。這樣伺服器就能從通行證上確認客戶身份了。這就是Cookie的工作原理。
Cookie實際上是一小段的文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie儲存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨認使用者狀態。伺服器還可以根據需要修改Cookie的內容。
什麼是Session
Session是另一種記錄客戶狀態的機制,不同的是Cookie儲存在客戶端瀏覽器中,而Session儲存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上。這就是Session。客戶端瀏覽器再次訪問時只需要從該Session中查詢該客戶的狀態就可以了。
如果說Cookie機制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那麼Session機制就是通過檢查伺服器上的“客戶明細表”來確認客戶身份。Session相當於程式在伺服器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。
Cookie與Session的區別
一 、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上;
二 、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session;
三 、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺服器的效能。考慮到減輕伺服器效能方面,應當使用COOKIE;
四 、單個cookie在客戶端的限制是3K,就是說一個站點在客戶端存放的COOKIE不能超過3K;
Cookie和Session的方案雖然分別屬於客戶端和服務端,但是服務端的session的實現對客戶端的cookie有依賴關係的,上面我講到服務端執行session機制時候會生成session的id值,這個id值會傳送給客戶端,客戶端每次請求都會把這個id值放到http請求的頭部傳送給服務端,而這個id值在客戶端會儲存下來,儲存的容器就是cookie,因此當我們完全禁掉瀏覽器的cookie的時候,服務端的session也會不能正常使用
相關文章
- cookie 和 sessionCookieSession
- session和cookieSessionCookie
- Cookie和SessionCookieSession
- 【Javaweb】Cookie和SessionJavaWebCookieSession
- cookie和session的區別CookieSession
- 對session和cookie的理解SessionCookie
- cookie和session的詳解CookieSession
- session和cookie關係SessionCookie
- 關於Session和CookieSessionCookie
- laravel操作session和cookieLaravelSessionCookie
- 撩下Cookie和SessionCookieSession
- Session和Cookie機制SessionCookie
- Session 和 Cookie 區別SessionCookie
- Cookie和Session機制CookieSession
- [session和cookie總結]SessionCookie
- Tomcat 中的 Session 和 CookieTomcatSessionCookie
- flask框架中的cookie和sessionFlask框架CookieSession
- PHP中Session和Cookie的探究PHPSessionCookie
- http中的cookie和session概念HTTPCookieSession
- 深入分析Session和CookieSessionCookie
- localStorage 與 sessionStorage / cookie 和 sessionSessionCookie
- 聊一聊session和cookieSessionCookie
- nodejs操作session和cookieNodeJSSessionCookie
- Java學習--Cookie 和sessionJavaCookieSession
- 理解Cookie和Session機制CookieSession
- Django框架之Cookie和SessionDjango框架CookieSession
- cookie 和session 的區別詳解CookieSession
- Java Web之Cookie和Session的理解JavaWebCookieSession
- Cookie和Session的區別詳解CookieSession
- cookie & sessionCookieSession
- cookie sessionCookieSession
- Cookie 和 Session 關係和區別CookieSession
- 【轉】Session ID/session token 及和cookie區別SessionCookie
- cookie和session的區別(全面總結)CookieSession
- 第74節:Java中的Cookie和SessionJavaCookieSession
- cookie和session的詳解與區別CookieSession
- Session和Cookie的聯絡與區別SessionCookie
- cookie和session的超詳解(配圖)CookieSession