溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

session和cookie的區(qū)別是什么

發(fā)布時間:2021-06-29 16:29:28 來源:億速云 閱讀:135 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“session和cookie的區(qū)別是什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1.session的工作流程

  • 客戶端訪問服務(wù)器,服務(wù)器調(diào)用Session()方法,產(chǎn)生session對象,用于跟蹤用戶的狀態(tài)

  • 同時,給session對象分配一個唯一標(biāo)識sessionId。為了管理session對象,以sessionId為鍵,以session對象為值。

  • 產(chǎn)生響應(yīng)時,將sessionId以cookie方式發(fā)送給客戶端,存放在客戶端瀏覽器的緩存中Cookie(JSESSIONID)。

  • 當(dāng)客戶端再次請求服務(wù)器,會將sessionId以cookie請求頭的方式發(fā)送給服務(wù)器(JSESSIONID),服務(wù)器得到JSESSIONID后和SessionID匹配,得到session對象,從而跟蹤狀態(tài)。【客戶端】JSESSIONID =【服務(wù)端】 SessionID

2.cookie是怎么工作的

  • 客戶端訪問服務(wù)器,服務(wù)器調(diào)用Cookie()方法,產(chǎn)生響應(yīng)時,會產(chǎn)生set-cookie響應(yīng)頭

  • 將cookie文本發(fā)送給客戶端,客戶端會將cookie文本保存起來

  • 當(dāng)客戶端再次請求服務(wù)器時,會產(chǎn)生cookie請求頭,將之前服務(wù)器發(fā)送的cookie信息,再發(fā)送給服務(wù)器,服務(wù)器就可以根據(jù)cookie信息跟蹤客戶端的狀態(tài)。

3.cookie的文件形式

  • Cookie 就是瀏覽器儲存在用戶電腦上的一小段文本文件

  • Cookie 是純文本格式,不包含任何可執(zhí)行的代碼

  • Cookie 由鍵值對構(gòu)成,由分號和空格隔開

  • Cookie 雖然是存儲在瀏覽器,但是通常由服務(wù)器端進(jìn)行設(shè)置

  • Cookie 的大小限制在 4kb 左右

4.cookie的具體內(nèi)容

    它可以記錄你的用戶ID、密碼、瀏覽過的網(wǎng)頁、停留的時間等信息。當(dāng)你再次來到該網(wǎng)站時,網(wǎng)站通過讀取Cookies,得知你的相關(guān)信息,就可以做出相應(yīng)的動作,如在頁面顯示歡迎你的標(biāo)語,或者讓你不用輸入ID、密碼就直接登錄等等。一個網(wǎng)站只能讀取它自己放置的信息,不能讀取其他網(wǎng)站的Cookie文件。因此,Cookie文件還保存了host屬性,即網(wǎng)站的域名或ip。 
    這些屬性以名值對的方式進(jìn)行保存,為了安全,它的內(nèi)容大多進(jìn)行了加密處理。Cookie文件的命名格式是:用戶名@網(wǎng)站地址[數(shù)字].txt

5.cookie的優(yōu)點(diǎn)和缺點(diǎn)

Cookie的優(yōu)點(diǎn):

  1. 給用戶更人性化的使用體驗(yàn),如記住“密碼功能”、老用戶登錄歡迎語

  2. 彌補(bǔ)了HTTP無連接特性

  3. 站點(diǎn)統(tǒng)計(jì)訪問人數(shù)的一個依據(jù)

 

Cookie的缺點(diǎn):

  1. 它無法解決多人共用一臺電腦的問題,帶來了不安全因素

  2. Cookie文件容易被誤刪除

  3. 一人使用多臺電腦

  4. Cookies欺騙。修改host文件,可以非法訪問目標(biāo)站點(diǎn)的Cookie

6.禁用了cookie之后,session還能用嗎?

    Cookie與 Session,一般認(rèn)為是兩個獨(dú)立的東西,Session采用的是在服務(wù)器端保持狀態(tài)的方案,而Cookie采用的是在客戶端保持狀態(tài)的方案。但為什么禁用Cookie就不能得到Session呢?因?yàn)镾ession是用Session ID來確定當(dāng)前對話所對應(yīng)的服務(wù)器Session,而Session ID是通過Cookie來傳遞的,禁用Cookie相當(dāng)于失去了Session ID,也就得不到Session了。

    在PHP中,通過相關(guān)的配置,可以讓Session不依賴Cookie而存在。PHP中的Session在默認(rèn)情況下是使用客戶端的Cookie來保存Session ID的,所以當(dāng)客戶端的cookie出現(xiàn)問題的時候就會影響Session了。必須注意的是:Session不一定必須依賴Cookie,這也是Session相比Cookie的高明之處。

    所以,我們可以拋開Cookie使用Session,即假定用戶關(guān)閉Cookie的情況下使用Session,其實(shí)現(xiàn)途徑有以下幾種:

        關(guān)閉cookie,使用session的方法

       1. 設(shè)置php.ini配置文件中的“session.use_trans_sid = 1”,或者編譯時打開打開了“--enable-trans-sid”選項(xiàng),讓PHP自動跨頁傳遞Session ID。
       2. 手動通過URL傳值、隱藏表單傳遞Session ID。
       3. 用文件、數(shù)據(jù)庫等形式保存Session ID,在跨頁過程中手動調(diào)用。


參考地址:https://www.cnblogs.com/tkzc2013/p/9875745.html

7.sessionid

 session的唯一標(biāo)識,一個隨機(jī)字符的字符串,例:sess_00nrqa20hjrlaiac0eu726i4q5

8.session和cookie的區(qū)別

 

1、存取方式的不同

    Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二進(jìn)制數(shù)據(jù),需求先進(jìn)行編碼。Cookie中也不能直接存取Java對象。若要存儲略微復(fù)雜的信息,運(yùn)用Cookie是比擬艱難的。

    而Session中能夠存取任何類型的數(shù)據(jù),包括而不限于String、Integer、List、Map等。Session中也能夠直接保管Java Bean乃至任何Java類,對象等,運(yùn)用起來十分便當(dāng)。能夠把Session看做是一個Java容器類。

2、隱私策略的不同

    Cookie存儲在客戶端閱讀器中,對客戶端是可見的,客戶端的一些程序可能會窺探、復(fù)制以至修正Cookie中的內(nèi)容。而Session存儲在服務(wù)器上,對客戶端是透明的,不存在敏感信息泄露的風(fēng)險。

    假如選用Cookie,比較好的方法是,敏感的信息如賬號密碼等盡量不要寫到Cookie中。最好是像Google、Baidu那樣將Cookie信息加密,提交到服務(wù)器后再進(jìn)行解密,保證Cookie中的信息只要本人能讀得懂。而假如選擇Session就省事多了,反正是放在服務(wù)器上,Session里任何隱私都能夠有效的保護(hù)。

3、有效期上的不同

    使用過Google的人都曉得,假如登錄過Google,則Google的登錄信息長期有效。用戶不用每次訪問都重新登錄,Google會持久地記載該用戶的登錄信息。要到達(dá)這種效果,運(yùn)用Cookie會是比較好的選擇。只需要設(shè)置Cookie的過期時間屬性為一個很大很大的數(shù)字。

    由于Session依賴于名為JSESSIONID的Cookie,而Cookie JSESSIONID的過期時間默許為–1,只需關(guān)閉了閱讀器該Session就會失效,因而Session不能完成信息永世有效的效果。運(yùn)用URL地址重寫也不能完成。而且假如設(shè)置Session的超時時間過長,服務(wù)器累計(jì)的Session就會越多,越容易招致內(nèi)存溢出。

4、服務(wù)器壓力的不同 

    Session是保管在服務(wù)器端的,每個用戶都會產(chǎn)生一個Session。假如并發(fā)訪問的用戶十分多,會產(chǎn)生十分多的Session,耗費(fèi)大量的內(nèi)存。因而像Google、Baidu、Sina這樣并發(fā)訪問量極高的網(wǎng)站,是不太可能運(yùn)用Session來追蹤客戶會話的。

    而Cookie保管在客戶端,不占用服務(wù)器資源。假如并發(fā)閱讀的用戶十分多,Cookie是很好的選擇。關(guān)于Google、Baidu、Sina來說,Cookie或許是唯一的選擇。

5、瀏覽器支持的不同 

    Cookie是需要客戶端瀏覽器支持的。假如客戶端禁用了Cookie,或者不支持Cookie,則會話跟蹤會失效。關(guān)于WAP上的應(yīng)用,常規(guī)的Cookie就派不上用場了。

    假如客戶端瀏覽器不支持Cookie,需要運(yùn)用Session以及URL地址重寫。需要注意的是一切的用到Session程序的URL都要進(jìn)行URL地址重寫,否則Session會話跟蹤還會失效。關(guān)于WAP應(yīng)用來說,Session+URL地址重寫或許是它唯一的選擇。

    假如客戶端支持Cookie,則Cookie既能夠設(shè)為本瀏覽器窗口以及子窗口內(nèi)有效(把過期時間設(shè)為–1),也能夠設(shè)為一切閱讀器窗口內(nèi)有效(把過期時間設(shè)為某個大于0的整數(shù))。但Session只能在本閱讀器窗口以及其子窗口內(nèi)有效。假如兩個瀏覽器窗口互不相干,它們將運(yùn)用兩個不同的Session。(IE8下不同窗口Session相干)

6、跨域支持上的不同

    Cookie支持跨域名訪問,例如將domain屬性設(shè)置為“.biaodianfu.com”,則以“.biaodianfu.com”為后綴的一切域名均能夠訪問該Cookie??缬蛎鸆ookie如今被普遍用在網(wǎng)絡(luò)中,例如Google、Baidu、Sina等。而Session則不會支持跨域名訪問。Session僅在他所在的域名內(nèi)有效。

    僅運(yùn)用Cookie或者僅運(yùn)用Session可能完成不了理想的效果。這時應(yīng)該嘗試一下同時運(yùn)用Cookie與Session。Cookie與Session的搭配運(yùn)用在實(shí)踐項(xiàng)目中會完成很多意想不到的效果。

參考地址:https://zhinan.sogou.com/guide/number/316513843800.htm?rcer=uXdGqt9h69jxEs6th

“session和cookie的區(qū)別是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI