回覆列表
  • 1 # 宇盛店淘

    具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。Cookie的優缺點:優點:極高的擴充套件性和可用性透過良好的程式設計,控制儲存在cookie中的session物件的大小。透過加密和安全傳輸技術(SSL),減少cookie被破解的可能性。只在cookie中存放不敏感資料,即使被盜也不會有重大損失。控制cookie的生命期,使之不會永遠有效。偷盜者很可能拿到一個過期的cookie。缺點:Cookie數量和長度的限制。每個domain最多隻能有20條cookie,每個cookie長度不能超過4KB,否則會被截掉。安全性問題。如果cookie被人攔截了,那人就可以取得所有的session資訊。即使加密也與事無補,因為攔截者並不需要知道cookie的意義,他只要原樣轉發cookie就可以達到目的了。有些狀態不可能儲存在客戶端。例如,為了防止重複提交表單,我們需要在伺服器端儲存一個計數器。如果我們把這個計數器儲存在客戶端,那麼它起不到任何作用。Session的優缺點:優點如果要在諸多Web頁間傳遞一個變數,那麼用Session變數要比透過QueryString傳遞變數可使問題簡化。要使WEb站點具有使用者化,可以考慮使用Session變數。你的站點的每位訪問者都有使用者化的經驗,基於此,隨著LDAP和諸如MS Site Server等的使用,已不必再將所有使用者化過程置入Session變量了,而這個使用者化是取決於使用者喜好的。你可以在任何想要使用的時候直接使用session變數,而不必事先宣告它,這種方式接近於在VB中變數的使用。使用完畢後,也不必考慮將其釋放,因為它將自動釋放。缺點Session變數和cookies是同一型別的。如果某使用者將瀏覽器設定為不相容任何cookie,那麼該使用者就無法使用這個Session變數!當一個使用者訪問某頁面時,每個Session變數的執行環境便自動生成,這些Session變數可在使用者離開該頁面後仍保留20分鐘!(事實上,這些變數一直可保留至“timeout”。“timeout”的時間長短由Web伺服器管理員設定。一些站點上的變數僅維持了3分鐘,一些則為10分鐘,還有一些則保留至預設值20分鐘。)所以,如果在Session中置入了較大的物件(如ADO recordsets,connections, 等等),那就有麻煩了!隨著站點訪問量的增大,伺服器將會因此而無法正常執行!因為建立Session變數有很大的隨意性,可隨時呼叫,不需要開發者做精確地處理,所以,過度使用session變數將會導致程式碼不可讀而且不好維護。雖然“你可以在任何想要使用的時候直接使用session變數,而不必事先宣告它,這種方式接近於在VB中變數的使用。使用完畢後,也不必考慮將其釋放,因為它將自動釋放”。但是,“誰”想到那兒呢?變數的含義是什麼?這些都變得不很清晰。

  • 2 # 水母星人

    關於兩者的一些區別,根據自己的理解和網路技術人員的分享,回答如此。

    1、儲存位置不同

    cookie的資料資訊存放在客戶端瀏覽器上。

    session的資料資訊存放在伺服器上。

    2、儲存容量不同

    單個cookie儲存的資料<=4KB,一個站點最多儲存20個Cookie。

    3、儲存方式不同

    cookie中只能保管ASCII字串,並需要透過編碼方式儲存為Unicode字元或者二進位制資料。

    session中能夠儲存任何型別的資料,包括且不限於string,integer,list,map等。

    4、隱私策略不同

    cookie對客戶端是可見的,別有用心的人可以分析存放在本地的cookie並進行cookie欺騙,所以它是不安全的。

    session儲存在伺服器上,對客戶端是透明對,不存在敏感資訊洩漏的風險。

    5、有效期上不同

    開發可以透過設定cookie的屬性,達到使cookie長期有效的效果。

    session依賴於名為JSESSIONID的cookie,而cookie JSESSIONID的過期時間預設為-1,只需關閉視窗該session就會失效,因而session不能達到長期有效的效果。

    6、伺服器壓力不同

    cookie保管在客戶端,不佔用伺服器資源。對於併發使用者十分多的網站,cookie是很好的選擇。

    session是保管在伺服器端的,每個使用者都會產生一個session。假如併發訪問的使用者十分多,會產生十分多的session,耗費大量的記憶體。

    7、瀏覽器支援不同

    假如客戶端瀏覽器不支援cookie:

    cookie是需要客戶端瀏覽器支援的,假如客戶端禁用了cookie,或者不支援cookie,則會話跟蹤會失效。關於WAP上的應用,常規的cookie就派不上用場了。

    運用session需要使用URL地址重寫的方式。一切用到session程式的URL都要進行URL地址重寫,否則session會話跟蹤還會失效。

    假如客戶端支援cookie:

    cookie既能夠設為本瀏覽器視窗以及子視窗內有效,也能夠設為一切視窗內有效。

    session只能在本視窗以及子視窗內有效。

    8、跨域支援上不同

    cookie支援跨域名訪問。

    session不支援跨域名訪問

  • 中秋節和大豐收的關聯?
  • 工商銀行2類卡能升級成1類卡嗎?