關於函數cookie、session、storage總結
一、cookie
1、cookie:記錄客戶端和伺服器端互動的資訊。
cookie規範定義了伺服器和客戶端互動資訊的格式、生存期、使用範圍、安全性。
在JavaScript中可以透過 document.cookie 來讀取或設定這些資訊。由於 cookie 多用在客戶端和服務端之間進行通信,除了JavaScript以外,服務端的語言(如PHP)也可以存取 cookie。
2、Cookie在遠端瀏覽器端儲存資料並以此追蹤和識別使用者的機制。 從實作上說,Cookie是儲存在客戶端上的一小段數據,瀏覽器(即客戶端)透過HTTP協定和伺服器端進行Cookie互動。 cookie 是有大小限制的,每個 cookie 存放的資料不能超過4kb,如果 cookie 字串的長度超過4kb,則該屬性將傳回空字串。
3、Cookie是由瀏覽器實作和管理的。
4、Cookie本身屬性有”Comment” 、”Domain”、”Max-Age”、”Path”、“Secure”、”Version”,具體使用方式參考JavaScript 操作 Cookie。
Comment 屬性是cookie的產生著對該cookie的描述;
Domain 屬性定義可存取該cookie的域名,對一些大的網站,如果希望cookie可以在子網站中共享,可以使用該屬性。例如設定Domain為 .bigsite.com ,則sub1.bigsite.com和sub2.bigsite.com都可以存取已儲存在客戶端的cookie,這時還需要將Path設定為/。
Max-Age 屬性定義cookie的有效時間,用秒計數,當超過有效期限後,cookie的資訊不會從客戶端附加在HTTP訊息標頭中傳送到服務端。
Path 屬性定義網站上可以存取cookie的頁面的路徑,缺省狀態下Path為產生cookie時的路徑,此時cookie可以被該路徑以及其子路徑下的頁面存取;可以將Path設定為/,使cookie可以被網站下所有頁面存取。
Secure 屬性值定義cookie的安全性,當值為true時必須是HTTPS狀態下cookie才從客戶端附加在HTTP訊息中傳送到服務端,在HTTP時cookie是不發送的;Secure為false時則可在HTTP狀態下傳遞cookie,Secure缺省為false。
Version 屬性定義cookie的版本,由cookie的建立者定義。
5、cookie的使用:
由伺服器端建立要記錄的訊息,然後傳遞到客戶端,由客戶端從HTTP訊息中取出訊息,保存在本機磁碟上。當客戶端再次存取伺服器端時,從本機磁碟上讀出原來保存的信息,附加到HTTP訊息中發送給伺服器端,伺服器端從HTTP訊息中讀取訊息,根據實際應用的需求進行進一步的處理。
6、由於cookie資訊以明文方式保存在文字檔案中,對一些敏感資訊如口令、銀行帳號如果要保存在本地cookie檔案中,最好採用加密形式。
二、Session詳解
1、Session即回話,指一種持續性的、雙向的連結。 Session與Cookie在本質上沒有區別,都是針對HTTP協定的限製而提出的一種保持客戶端和伺服器間保持會話連線狀態的機制。 Session也是一個通用的標準,但在不同的語言中實作有所不同。針對Web網站來說,Session指使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉這段時間內的會話。 Session其實是一個特定的時間概念。
2、Session是透過sessionID判斷客戶端使用者的,也就是Session檔案的檔案名稱。 sessionID其實是在客戶端和服務端之間透過HTTP Request 和 HTTP Response傳來傳去。 sessionID依照一定的演算法生成,必須包含在 HTTP Request 裡面,確保唯一性和隨機性,以確保Session的安全。如果沒有設定 Session 的產生週期, sessionID儲存在記憶體中,關閉瀏覽器後該ID自動登出;重新要求該頁面,會重新註冊一個sessionID。如果客戶端沒有停用Cookie,Cookie在啟動Session回話的時候扮演的是儲存sessionID 和 Session 生存期的角色。 Session過期後,PHP會回收。
三、session與cookie的區別:
1、session 在伺服器端,cookie 在客戶端(瀏覽器)
2、session 存在在伺服器的一個檔案裡(預設),不是記憶體
3、session 的運行依賴session id,而session id 是存在cookie 中的,也就是說,如果瀏覽器停用了cookie ,同時session 也會失效(當然也可以在url 中傳遞)
4、session 可以放在文件,資料庫,或記憶體中都可以。
5、使用者驗證這種場合一般會用session因此,維持一個會話的核心就是客戶端的唯一標識,即session id
6、session如果佔據太多內存會給伺服器服務性能造成一定的負擔。 cookie保存的資料有限
7、session保存的是對象,cookie保存的是字串類型的鍵值對。
解釋:
由於HTTP協定是無狀態的協議,所以當服務端需要記錄用戶的狀態時,就需要用某種機制來識具體的用戶,這個機制就是Session.典型的場景例如購物車,當你點擊下單按鈕時,由於HTTP協議無狀態,所以並不知道是哪個用戶操作的,所以服務端要為特定的用戶創建了特定的Session,用用於標識這個用戶,並且追蹤用戶,這樣才知道購物車裡面有幾本書。這個Session是保存在服務端的,有一個唯一識別。 在服務端保存Session的方法很多,記憶體、資料庫、檔案都有。 集群的時候也要考慮Session的轉移,在大型的網站,一般會有專門的Session伺服器集群,用來保存用戶會話,這個時候Session 資訊都是放在內存的,使用一些緩存服務比如Memcached之類的來放Session。
思考一下服務端如何辨識特定的客戶?這時候Cookie就登場了。每次HTTP請求的時候,客戶端都會傳送對應的Cookie訊息到服務端。實際上大多數的應用程式都是用Cookie 來實作Session追蹤的,第一次建立Session的時候,服務端會在HTTP協定中告訴客戶端,需要在Cookie 裡面記錄一個Session ID,以後每次要求把這個會話ID傳送到伺服器,我就知道你是誰了。有人問,如果客戶端的瀏覽器停用了 Cookie 怎麼辦?一般這種情況下,會使用一種叫做URL重寫的技術來進行會話跟踪,即每次HTTP交互,URL後面都會被附加上一個諸如 sid=xxxxx 這樣的參數,服務端據此來識別用戶。
Cookie其實還可以用在一些方便使用者的場景下,設想你某次登陸過一個網站,下次登入的時候不想再輸入帳號了,怎麼辦?這個資訊可以寫到Cookie裡面,造訪網站的時候,網站頁面的腳本可以讀取這個訊息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給使用者的一點甜頭。所以,總結一下:Session是在服務端保存的資料結構,用來追蹤使用者的狀態,這個資料可以保存在叢集、資料庫、檔案中;Cookie是客戶端保存使用者資訊的一種機制,用來記錄用戶的一些訊息,也是實現Session的一種方式。
四、Web Storage
web storage 是在客戶端保存數據,HTML5 提供的在客戶端儲存資料的新方法,分為兩種:localStorage和sessionStorage; 使用它可以在客戶端本地建立一個資料庫,原本保存在伺服器端資料庫中的內容可以直接保存在客戶端本地,大大減輕了伺服器端的負擔,同時加快了存取資料的速度。
1、localStorage:資料永久保存。將資料保存在客戶端本地的硬體設備(硬碟或其他硬體設備)中,即使瀏覽器關閉了,該資料任然存在。 localStorage的作用域是限定在文檔來源層級的,不同的文檔來源之間是不能讀取和修改對方的資料的,而相同的文檔來源是可以的。但是不同的瀏覽器是不共享Storage的,也就是說你在Chorme瀏覽器裡存的數據,在Firefox裡是訪問不到的,即使它們是同一文檔源。
2、sessionStorage:資料暫存。資料儲存在session物件中。儲存時間為從進入網頁到瀏覽器網頁關閉所經過的這段時間。 sessionStorage的作用域同樣是限定在文件來源層級的,不僅如此,它還被限制在標籤頁中,不同標籤頁的同一個頁面擁有各自的sessionStorage,資料不能共用。如果是一個頁面裡有兩個iframe元素,它們是共享sessionStorage的。
以上是關於函數cookie、session、storage總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Cookie通常儲存在瀏覽器的Cookie資料夾中的,瀏覽器中的Cookie檔案通常以二進位或SQLite格式存儲,如果直接開啟Cookie文件,可能會看到一些亂碼或無法讀取的內容,因此最好使用瀏覽器提供的Cookie管理介面來檢視和管理Cookie。

電腦上的Cookie儲存在瀏覽器的特定位置,具體位置取決於使用的瀏覽器和作業系統:1、Google Chrome, 儲存在C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies中等等。

session失效通常是由於 session 的生存時間過期或伺服器關閉導致的。其解決方法:1、延長session的生存時間;2、使用持久化儲存;3、使用cookie;4、非同步更新session;5、使用會話管理中介軟體。

PHPSession跨域問題的解決方法在前後端分離的開發中,跨域請求已成為常態。在處理跨域問題時,我們通常會涉及session的使用和管理。然而,由於瀏覽器的同源策略限制,跨域情況下預設無法共享session。為了解決這個問題,我們需要採用一些技巧和方法來實現session的跨域共享。一、使用cookie跨域共享session最常

手機上的Cookie儲存在行動裝置的瀏覽器應用程式中:1、在iOS裝置上,Cookie儲存在Safari瀏覽器的Settings -> Safari -> Advanced -> Website Data中;2、在Android裝置上,Cookie儲存在Chrome瀏覽器的Settings -> Site settings -> Cookies中等等。

Cookie運作方式涉及到伺服器發送Cookie、瀏覽器儲存Cookie以及瀏覽器對Cookie的處理和儲存。詳細介紹:1、伺服器發送Cookie,伺服器會傳送一個包含Cookie的HTTP回應標頭給瀏覽器。這個Cookie包含了一些訊息,例如使用者的身份認證、偏好設定或購物車內容等,瀏覽器接收到這個Cookie後,會將它儲存在使用者的電腦上;2、瀏覽器儲存Cookie等等。

隨著網路的普及,我們使用瀏覽器進行上網已經成為一種生活方式。在日常使用瀏覽器過程中,我們常會遇到需要輸入帳號密碼的情況,如網購、社交、郵件等。這些資訊需要瀏覽器記錄下來,以便下次造訪時不需要再次輸入,這時候Cookie就派上了用場。什麼是Cookie? Cookie是指由伺服器端發送到使用者瀏覽器上並儲存在本地的一種小型資料文件,它包含了一些網站的使用者行為

清除cookie產生的影響有重置個人化設定和偏好、影響廣告體驗、破壞登入狀態和記住密碼功能。詳細介紹:1、重置個人化設定和偏好,如果清除了cookie,購物車將被重置為空,需要重新添加商品,同樣清除cookie還會導致在社群媒體平台上的登入狀態遺失,需要重新輸入使用者名稱和密碼;2、影響廣告體驗,如果清除了cookie,網站將無法了解我們的興趣和偏好,會顯示無關的廣告等等。
