對cookie的一些認識

2021-08-31 12:52:49 字數 1406 閱讀 4646

cookie是一小段文字資訊,將資料儲存在客戶端,設計初衷是為了彌補http協議無狀態的不足。客戶端請求伺服器時,如果伺服器需要記錄該使用者的狀態,就使用response向客戶端頒發乙個cookie,客戶端會把cookie儲存起來。當瀏覽器再次訪問該**時,瀏覽器會把請求的**連同該cookie一起提交給伺服器。我用乙個簡單的servlet工程對上述定義進行驗證時發現,當乙個前台jsp頁向後台servlet類提交請求時,類中有**cookie co=request.getcookies(),而此時的co長度為1,也就是說存在乙個cookie,顯示的cookie的name是jsessionid(jsessionid只是tomcat中對session id的叫法,在其它容器裡面,不一定就是叫jsessionid了),值是乙個很長的無規則字串,但類中並沒有建立cookie的語句,為什麼會出現cookie呢?這是因為這個cookie是session cookie,當你訪問web時,服務端都會為你開壁一塊記憶體區間,用以存放你這次會話的一些內容,可以理解為session,那麼就需要乙個東西來標誌這個記憶體區間是你的而不是別人的,這個東西就是session id,也就是jsessionid的值,和在類中建立乙個httpsession並取出這個session的id的值是一樣的。只要你瀏覽器沒有關閉,你每向伺服器發請求,伺服器就會從你傳送過來的cookies中拿出這個session id,然後根據這個session id到相應的記憶體中取你之前存放的資料。但是,如果你退出登陸了,伺服器會清掉屬於你的記憶體區域,所以你再登的話,會產生乙個新的session了。注意的是這個儲存jsessionid的cookie是存在瀏覽器的記憶體中,而不是本地硬碟內。

persistent cookies,就是可以儲存在硬碟裡的cookie(設定了一定有效期限),在c:\documents and settings\你的使用者名稱\local settings\temporary internet files(internet選項-設定-檢視檔案)和c:\documents and settings\你的使用者名稱\cookies中。cookie的屬性和方法可以參見cookie的api,在這想分析下path和domain屬性。cookie本身是不可跨網域名稱的,如果想讓所有***.com名下的二級網域名稱都可以使用改cookie,就需要設定domain引數,cookie.setdomain(「.***.com」)。path屬性決定允許訪問cookie的路徑(contextpath),設定為」/」時允許所有路徑使用cookie,屬性需要使用符號」/」結尾,如:」/session/」,注意的是頁面只能獲取它屬於的path的cookie,例如/session/test/a.jsp不能獲取路徑為/session/abc/的cookie。

如果要修改cookie,只需新建乙個同名的cookie,並新增到response中,將maxage設定為0表示刪除cookie。注意修改或刪除時新建的cookie除了value和maxage外其他屬性都要一樣。

並非全部原創,借鑑了其他人總結

關於 對拍 的一些認識

對拍是怎麼回事呢?對拍相信大家都很熟悉,但是對拍是怎麼回事呢,下面就讓小編帶大家一起了解吧。對拍是用來檢驗自己寫的正解的正確性 效率的東西。操作說明 1.準備好自己寫的暴力 b.cpp 和 b.exe 和正解 z.cpp 和 z.exe 2.寫乙個造資料的程式 shuju.cpp 和 shuju.e...

對PHP PDO的一些認識小結

1 pdo php data object 擴充套件為php定義了乙個訪問資料庫的輕量 持久的介面。實現pdo接www.cppcns.com口的每一種資料庫驅動都能以正則擴充套件的形式把各自的特色表現出來。主要 pdo擴充套件只是乙個抽象的介面層,利用pdo擴充套件本身並不能實現任何資料庫操作,必須...

對敏捷方法的一些簡單認識

前言 這兩天做的事情,不能說沒有用,至少了解了很多資料庫的東西,不過大部分做的都是無用功這點是毋庸置疑的,也許這是調研和設計過程不可避免的事情,也罷。正文 目前實習所在的專案處於測試階段,負責測試的同學連著忙了個把月,天天加班,不斷測出問題,搞的組內氛圍.咳咳.再想到這幾天做的無用功來回折騰等等,就...