首頁 > 後端開發 > php教程 > cookie和session有什麼關聯和區別

cookie和session有什麼關聯和區別

一个新手
發布: 2023-03-15 21:16:01
原創
4173 人瀏覽過

http協定是無狀態的,但是許多應用程式需要伺服器掌握客戶端的狀態,例如線上購物,這時cookie和session就發揮了它們的作用

cookie和session的區別和聯繫

cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器保持狀態的方案,可是採用伺服器端保持狀態的方案在客戶端也要保存一個標識,所以session機制可能需要藉助於cookie機制以達到保存標識的目的,但實際上它還有其他選擇

cookie機制

  • cookie技巧
    辨別使用者身份,進行session追蹤而儲存在使用者本地端上的資料(通常經過加密)

  • #cookie元件

    1.http回應訊息的cookie頭部行
    2.http請求訊息的cookie頭行
    3.保存在客戶端主機上的cookie文件,由瀏覽器管理
    4.web伺服器端的後台資料庫

  • cookie和session有什麼關聯和區別
    cookie和session有什麼關聯和區別

cookie分發是透過擴展http協定來實現的,伺服器透過在http的回應頭加上一行特殊的指示以提示瀏覽器按照指示產生對應的cookie,但是有一點要注意一下。純粹的客戶端腳本例如javascript或vbscript也可以產生cookie,所以在安全方面有隱憂。

cookie的使用是由瀏覽器依照一定的原則在後台自動傳送給伺服器的。瀏覽器檢查所有的cookie,如果這個cookie所聲明的作用範圍大於將要請求的資源所在的位置,則把cookie附在請求資源的http頭部上發送給伺服器

#cookie的內容主要包括:名字,值,過期時間,路徑和域,路徑和域一起構成cookie的作用範圍,如果不設定過期時間,則表示這個cookie的生命週期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失。這種生命週期為會話期的cookie被稱為會話cookie,會話cookie一般不儲存在硬碟上,而是保存在記憶體中。如果設定了過期時間,瀏覽器就會把cookie儲存到硬碟上,關閉後再次開啟瀏覽器,這些cookie仍然有效,直到超過設定的過期時間,儲存在硬碟上的cookie可以在不同的瀏覽器進程共用

session機制

在WEB開發中,伺服器可以為每個使用者瀏覽器建立一個會話物件(session物件),注意:一個瀏覽器獨佔一個session物件(預設情況下)。因此,在需要保存使用者資料時,伺服器程式可以把使用者資料寫到使用者瀏覽器獨佔的session中,當使用者使用瀏覽器存取其它程式時,其它程式可以從使用者的session中取出該使用者的數據,為用戶服務。

session是一種伺服器端的機制,伺服器使用一種類似散列表的結構來保存資訊當程式需要為某個客戶端的請求建立session時,伺服器首先檢查這個客戶端的請求裡是否已包含了一個session標識(稱sessionid)。

如果已包含則表示以前已經為此客戶端建立過session,伺服器就按照session id把這個session檢索出來使用,如果檢索不到,就會新建一個。

如果客戶端請求不包含session id,則為此客戶端創建一個session並且產生一個與此session相關聯的session id,session id的值應該是一個唯一且無規律,不容易偽造的字串,這個session id會在被本次回應中傳回給客戶端保存。

儲存這個session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的依照規則把這個識別傳送給伺服器。一般這個cookie的名字都是類似SESSIONID,但cookie可以被人為的禁止,所以必須有其他機制以便於在禁止cookie的情況下仍然能夠把session id發送給伺服器

經常使用的一種技術叫做URL重寫,就是把session id直接附加到URL路徑的後面。還有一種技術叫做表單隱藏欄位。就是伺服器會自動修改表單,新增一個隱藏字段,以便於在表單提交時能夠把session id發送給伺服器,例如:

<form name="testform" action="/xxx"> 
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
<input type="text"> 
</form>
登入後複製

綜上所述,差異可以總結為以下內容

  • cookie資料存放在客戶的瀏覽器上,session資料存放在伺服器上

  • cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,所以將登陸資訊等重要資訊存放在session中比較好,其他資訊如果需要保留,可以存放在cookie中

  • session會在在一定時間內保存在伺服器上,當存取增多,會比較佔用伺服器效能

  • 單一cookie保存的資料不能超過4k,很多瀏覽器都限制一個網站最多保存20個cookie

http協議是無狀態的,但是很多應用程式需要伺服器掌握客戶端的狀態,例如網路購物,這時cookie和session就發揮了它們的作用

以上是cookie和session有什麼關聯和區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板