不清不楚的 Session 和 Cookie

2021-09-20 05:52:36 字數 2068 閱讀 2591

會話(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也會不能正常使用

摘自:

Javascript不清不楚之concat

均來自 mdn 此方法用來合併多個陣列,不會改變原有的陣列,返回乙個新的陣列 根據提供的陣列做淺拷貝生成新陣列 注意 陣列 值在連線時保持不變。此外,對於新陣列的任何操作 僅當元素不是物件引用時 都不會對原始陣列產生影響,反之亦然 var arr 1,2,3 var res arr.concat 4...

JavaScript不清不楚之copyWithin

均來自 mdn 原陣列將被改變,但是陣列的長度不會發生變化,ie系列不支援此方法 if array.prototype.copywithin var o object this steps 3 5.0 的作用 無符號右移 1.能轉換為數值的先轉換為數值然後在右移 2.非數值型別不能轉換為數值的返回0...

一些關於集合的不不清不楚的東西

1.集合分為 泛型集合 list 和 非泛型集合 arraylist 2.集合與陣列類似 但相比較於陣列 集合的好處在於 長度不固定 資料型別可以不用定義 牽扯到泛型集合最基本的判斷 事先定義資料型別的為泛型集合 否則為非泛型集合 並且集合區別於陣列的是可以動態擴容,並且它的索引會 根據程式的擴充套...