Session Cookie相關知識

2022-02-24 12:44:52 字數 3320 閱讀 2444

session,cookie是b/s中最常見的元素,除了只支援wap1.0的手機,部分不支援cookie,因此session客戶端也一般存到url上,或者客戶端禁止cookie,但現在一般不手工禁止cookie。下面對它們的區別做個簡單的介紹,這裡涉及具體配置就用.net環境下的配置介紹,不同語言思想都一樣。

下面簡單介紹http協議和session,cookie介紹和簡單區別:

http協議:

服務端不能主動連線客戶端,只能被動等待並答覆客戶端請求,瀏覽器無法記錄客戶端上次請求的狀態(request header | response header)。

session:

session物件的原理:伺服器為客戶端建立並維護乙個session物件,用於存放資料。在建立session物件的同時,伺服器為該session物件產生乙個唯一編號sessionid。

伺服器儲存方式: ( mode )

off:禁用。

inproc:設定為將session儲存在程序內,預設設定, 效能最高。

stateserver: 將session儲存在獨立的狀態服務中,通常是aspnet_state.exe程序,效能損失10-15%。

sqlserver: 設定將session儲存在sql server中,效能損失10-20%。

customer: 自定製的儲存方案 由實現方式確定。

下面詳細介紹stateserver和sqlserver配置方式。

stateserver:1.啟動 asp.net state service服務.(這個服務預設的狀態為手動.修改為自動並啟動.)2.修改登錄檔: [hkey_local_machine\system\controlset001\services\aspnet_state\parameters]

設定 allowremoteconnection = 1 , 設定 port = 42424 (十進位制,預設即為42424)

port是服務的埠號

allowremoteconnection 表示是否允許其他機器連線,0為僅能本機使用,1為可以供其他機器使用.

如:即可。

sqlserver:  使用sqlserver模式搭建session伺服器端有兩種方式. asp.net 1.0和1.1版本請使用方式a, 2.0即以上版本請使用方式b.

a.使用sql檔案建立session資料庫

在asp.net 1.0和1.1 版本中, 只能使用這種方式.對於2.0及其以上版本,請使用aspnet_regsql.exe工具.(當然此方法也通用2.0版本)

.net提供了資料庫安裝指令碼,可以在機器的windows資料夾中找到:

c:\windows\microsoft.net\framework\v2.0.50727\ installsqlstate.sql

c:\windows\microsoft.net\framework\v2.0.50727\ installsqlstatetemplate.sql

根據asp.net的版本不同, 需要使用不同的sql指令碼. asp.net主要有1.1和2.0兩個版本,可以在不同的版本資料夾找到這兩個sql.

installsqlstate.sql 是建立預設名稱的資料庫"[aspstate]".此sql可以直接執行.

installsqlstatetemplate.sql 可以使用自己指定的資料庫儲存資料.此sql需要自己修改後執行, 開啟sql檔案將其中 [databasenameplaceholder] 替換為自己指定的資料庫名稱.

執行installsqlstate.sql時不需要指定資料庫,可以在任意資料庫上執行.此sql會自己建立新的資料庫。

b. 使用aspnet_regsql.exe工具

asp.net 2.0版本後微軟提供了aspnet_regsql.exe工具可以方便的配置session資料庫.該工具位於 web 伺服器上的"系統根目錄\microsoft.net\framework\版本號"資料夾中.

使用舉例: c:\windows\microsoft.net\framework\v2.0.50727\aspnet_regsql.exe -ssadd -e 執行這個新ok了

c:\windows\microsoft.net\framework\v2.0.50727\aspnet_regsql.exe -s . -u sa -p liusen -ssadd -sstype p  這個可遠端開啟

例如:c:\windows\microsoft.net\framework\v2.0.50727>aspnet_regsql.exe -s . -u sa -p liusen -ssadd -sstype c -d chens(自定資料庫)

-s引數:

表示資料庫例項名稱. 可以用"."表示本機.

-u和-p引數:

表示使用者名稱和密碼.

-e引數:

可以再-u –p 與 -e中選擇一組. –e表示以當前系統使用者通過windows身份驗證登入資料庫, -u -p則是使用sqlserver使用者登入資料庫.

-ssadd / –ssremove 引數:

-ssadd表示是新增session資料庫, -ssremove表示移除session資料庫.

sstype 引數: t 將會話資料儲存到 sql server tempdb 資料庫中。這是預設設定。如果將會話資料儲存到 tempdb 資料庫中,則在重新啟動 sql server 時將丟失會話資料。  p 將會話資料儲存到 aspstate 資料庫中,而不是儲存到 tempdb 資料庫中。 c 將會話資料儲存到自定義資料庫中。如果指定 c 選項,則還必須使用 -d 選項包括自定義資料庫的名稱。

注意:在sqlserver模式下,session過期是由sql agent使用乙個註冊任務完成的,要確認sql agent已經執行。否則無法清理過期的session資料, 會導致資料庫資料一直增加。

http請求的相關資料,sessionid在客戶端預設也是以httponly的cookie方式儲存:

cookie:區別總結:

1、session 可以以cookie的形式存在客戶端,也可以用url傳輸sessionid,如果是cookie形式,則它是伺服器端設定的h

ttponly的cookie,在客戶端它只是乙個id,只有關聯伺服器,才知道它的具體值。

2、cookie是客戶端和伺服器端傳輸的小文字,它存了對應的具體指,伺服器不用為每個具體cookie存對應關係的值。

會話技術 session cookie

定義 會話跟蹤是web程式中常用的技術,用來跟蹤使用者的整個會話,乙個使用者的所有請求操作都應屬於同乙個會話 常用的會話跟蹤技術是cookie與session。解決問題 用於解決身份識別問題 cookie 通過在客戶端 記錄資訊確定使用者身份,session 通過在伺服器端 記錄資訊確定使用者身份。...

Session Cookie簡單理解

session session是一種記錄客戶狀態的機制,session是儲存在伺服器上的,當瀏覽器訪問伺服器的時候,伺服器把客戶端資訊以某種形式記錄在伺服器上,這就是所謂的session,當瀏覽器再次訪問的時候從該session中查詢客戶的狀態就可以了。看到乙個很經典的描述session的話 ses...

session cookie和cache的區別

其中cookie是儲存在客戶端的一組資料,主要用來儲存使用者名稱等個人資訊。session session用來儲存每乙個使用者的專有資訊 session的生存期是使用者持續請求時間加上一段時間 一般是20分鐘左右 session資訊是儲存在web伺服器記憶體中的,儲存資料量可大可小 由於使用者停止使...