程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> cookie和session的基礎知識及在ASP.NET中的應用

cookie和session的基礎知識及在ASP.NET中的應用

編輯:關於ASP.NET

cookie和session的基礎知識:

cookie是保存在客戶端的,保存少量信息,明文,經常用來保存用戶id之類的信息,常見場景就是登錄時候的“記住我”。不推薦保存敏感信息。

session是會話級的,保存在服務端,每個用戶是唯一的,可以用來實現購物車之類的,需要在服務端保存當前用戶會話的上下文信息的需求。可以保存在服務器的內存中,不能跨服務器;可以保存在數據庫中。

上面是一些零星的知識點。其實還有很多,例如cookie中的sessionid,session還可以用狀態服務器保存,這樣可以用專用的服務器保存session。cookie中的內容是字符串類型的,session中的內容是object類型的,session中的內容獲取之後需要類型轉換,轉換成所需要的類型。

在ASP.NET中,可以在web.config文件中進行配置。

<configuration> 
    <system.web> 
<sessionState mode="InProc"
                    timeout="20"
                    cookieless="true"
                    stateConnectionString="tcpip=localhost:42424"
                     sqlConnectionString=""
                    /> 
         
    </system.web> 
     
</configuration>

關於配置節中的參數信息,可以查看 ASP.NET Session 狀態的存儲 ,講得比較詳細,還有找到了細說Cookie 這樣一篇文章,感覺講得也比較詳細。

問題有兩個。

1 客戶端禁用cookie之後,session還能用嗎?

2 cookie是如何在客戶端和服務端傳遞的,具體的傳遞過程。

回答。

1 客戶端禁用cookie之後,session還能用嗎?

禁用cookie之後,也可以使用session。

Session的狀態存儲在兩個地方,分別是客戶端和服務端。客戶端保存SessionID,Session信息保存在服務端。客戶端的SessionID是保存在Cookie中的,如果浏覽器禁用cookie,那麼就不能使用session的好處了。

其實sessionid還可以通過url傳遞,還可以通過form傳遞,可以自定義來實現的。

在ASP.NET中,session有兩種存儲方式:cookie和cookieless。也就是說禁用cookie也可以使用session。配置為cookieless=true之後,可以選擇將session存儲在狀態服務中,或者存儲在SQL Server中。具體的做法可以看一下最後的參考文獻。

2 cookie是如何在客戶端和服務端傳遞的,具體的傳遞過程。

cookie在客戶端和服務器端的傳遞是通過請求和響應的頭來傳遞的。

從客戶端到服務器端傳遞cookie,是在request的header中有一個cookie,裡面就是傳遞的內容。

從服務器端到客戶端傳遞cookie,是在response的header中有一個set-cookie,裡面就是通過後台代碼設置的cookie的內容。

這可以通過很多的抓包工具來查看,例如fiddler,httpwatch,firebug。

本文出自 “突破中的IT結構師” 博客,請務必保留此出處http://virusswb.blog.51cto.com/115214/998456

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved