session過期時(shí)間設(shè)置說明
session 過期時(shí)間設(shè)置說明一. 系統(tǒng)session 配置說明針對(duì)承保(prpall)、雙核(undwrt)系統(tǒng)中,有兩個(gè)配置文件可以設(shè)置session 的過期時(shí)間 分別是web.xml 和we
session 過期時(shí)間設(shè)置說明
一. 系統(tǒng)session 配置說明
針對(duì)承保(prpall)、雙核(undwrt)系統(tǒng)中,有兩個(gè)配置文件可以設(shè)置session 的過期時(shí)間 分別是web.xml 和weblogic.xml
Web.xml 中配置
時(shí)間單位是一分鐘,并且只能是整數(shù),如果是零或負(fù)數(shù),那么會(huì)話就永遠(yuǎn)不會(huì)超時(shí)。 此例表示Session 將在60分鐘后過期
weblogic.xml 中設(shè)置的TimeoutSecs 屬性值。
Weblogic.xml 中配置
時(shí)間單位是一秒鐘,表示1800秒后失效。
1. 如果兩個(gè)配置文件中都有配置,且Weblogic.xml 中配置的秒數(shù)必須可以被60整除,(如60,120等) 。則按照時(shí)間最小的那個(gè)為準(zhǔn)。
2. 如果兩個(gè)配置文件中都有配置, 且Weblogic.xml 中配置的秒數(shù)必須不可以被60整除(如,45,90等)。則以web.xml 設(shè)置的時(shí)間為準(zhǔn)。
3. 如果web.xml 文件中沒有設(shè)置,且Weblogic.xml 中有配置。則按照Weblogic.xml 的設(shè)置為準(zhǔn)。
4. 為保證session 的唯一性,在weblogic 環(huán)境下,建議只在weblogic.xml 中設(shè)置。防止出現(xiàn)沖突。
,二. 疑問
1. web.xml,weblogic.xml 同時(shí)配置時(shí),為什么會(huì)是以時(shí)間小的為準(zhǔn)? 暫時(shí)無解。
2. 對(duì)應(yīng)的weblogic.xml 必須配置為分鐘的整數(shù)倍?
如web=2m weblogic=90s,最終為以web 為準(zhǔn)。
web=3m weblogic=120s 以 weblogic為準(zhǔn)
暫時(shí)無解。
3. 關(guān)于“WEB-INF/config/appconfig/SysConstConfig.xml” 中的session 時(shí)效時(shí)間。 從目前情況看, SysConstConfig.xml 這個(gè)應(yīng)該沒有使用;那么就是 web.xml 與weblogic.xml 這兩個(gè)的配置用誰的問題了。
按網(wǎng)上說法,對(duì)應(yīng)的優(yōu)先級(jí)應(yīng)該是:自定義xml 配置的session>web.xml>weblogic.xml;個(gè)人理解為:自定義的配置最高的原因是因?yàn)?,我們程序?qū)崿F(xiàn)判斷session 時(shí)去讀取了這個(gè)時(shí)間;對(duì)于web.xml>weblogic.xml,從上述的測試過程中發(fā)現(xiàn)并不是如此。
三. 配置session 方式
WebLogic 如何設(shè)置session 超時(shí)時(shí)間
1 web.xml
設(shè)置WEB 應(yīng)用程序描述符web.xml 里的
此例表示Session 將在54分鐘后過期
當(dāng)
TimeoutSecs 這個(gè)屬性值。
當(dāng)
weblogic.xml 中設(shè)置的TimeoutSecs 屬性值。
該屬性值可以通過console 控制臺(tái)來設(shè)置
2 weblogic.xml
設(shè)置WebLogic 特有部署描述符weblogic.xml 的
默認(rèn)值是3600秒
3,jsp 中控制
session.setmaxinactiveinterval(7200);
session 是默認(rèn)對(duì)象, 可以直接引用, 單位秒s
4,servlet 中控制
session.setmaxinactiveinterval(7200);
單位秒s
在weblgoic 的console 中:xxDomain ->Servers->xxServer->Protocols->HTTP 中有一個(gè)關(guān)于Post Timeout的配置,但這個(gè)參數(shù)一般使用默認(rèn)值即可
一般是通過Services-->JDBC-->Connection Pools-->MyConnection(你所建立的連接池名) -->Configration-->Connections 里的Inactive Connection Timeout這個(gè)參數(shù)來設(shè)置的,默認(rèn)的為0,表示連接時(shí)間無限長。你可以設(shè)一個(gè)時(shí)間值,連接超過這個(gè)時(shí)間值,它會(huì)把連接強(qiáng)制放回連接池
CompleteMessageTimeout="480" IdleConnectionTimeout="600" ListenAddress="" ListenPort="7001" Name="myserver" NativeIOEnabled="true" ReliableDeliveryPolicy="RMDefaultPolicy" ServerVersion="8.1.4.0"> 是否IdleConnectionTimeout 參數(shù) 看連接池中高級(jí)選項(xiàng)內(nèi)的Inactive Connection Timeout和Connection Reserve Timeout時(shí)多少, 把這兩項(xiàng)設(shè)大些試試 如果在兩個(gè)文件中同時(shí)設(shè)置了超時(shí)時(shí)間,則會(huì)以web.xml 中為準(zhǔn)。 所以在weblogic 環(huán)境中,最好將web.xml 中關(guān)于超時(shí)的設(shè)置刪掉,保持唯一性。 如果使用WEBLOGIC 作為應(yīng)用服務(wù)器,設(shè)置SESSION 超時(shí)時(shí)間會(huì)選擇在WEBLOGIC 的控制臺(tái)設(shè)定。實(shí)際上,WEBLOGIC 是將超時(shí)設(shè)定保存在WEB-INF 下的weblogic.xml 中,格式如下: param-value 中的數(shù)值就是超時(shí)時(shí)間,單位為秒。在設(shè)置完這個(gè)參數(shù)后,會(huì)發(fā)現(xiàn)超時(shí)時(shí)間并一定起效。這是為什么呢? 原來在WEB-INF 下還有一個(gè)配置文件web.xml ,里面同樣會(huì)有一段設(shè)置session ,格式如下: session-timeout 中的值也是超時(shí)時(shí)間,單位為分鐘。 如果在兩個(gè)文件中同時(shí)設(shè)置了超時(shí)時(shí)間,則會(huì)以web.xml 中為準(zhǔn)。 所以在weblogic 環(huán)境中,最好將web.xml 中關(guān)于超時(shí)的設(shè)置刪掉,保持唯一性。 這也是發(fā)現(xiàn)了問題后,多次實(shí)驗(yàn)后發(fā)現(xiàn)的。 以下問題: ueue: ‘billproxyqueue ’ has been busy for “727″ seconds working on the request “Http Request: /bill/y nQueryPublic.go ”, which is more than the configured time (StuckThreadMaxTime) of “600″ seconds.> 一看明顯是連接超時(shí), 導(dǎo)致的錯(cuò)誤. 程序問題, 是不是程序中沒有關(guān)閉連接 如果程序沒問題, 則是weblogic 的StuckThreadMaxTime 設(shè)置過小而引起的, 一般weblogic server 的StuckThreadMaxTime 默認(rèn)參數(shù)是600s, 即10分鐘, 如果并發(fā)量過大, 而導(dǎo)致等待處理過多, 導(dǎo)致系統(tǒng)不停的增加線程,造成線程阻塞,你可以把該參數(shù)設(shè)置大點(diǎn)這個(gè)是稍微調(diào)大StuckThreadMaxTime 的參數(shù)即可. 看線程數(shù)設(shè)置, 可適當(dāng)增加線程數(shù),這個(gè)在WLS 控制臺(tái)中可以調(diào)整 四. 關(guān)于session 通過 在weblgoic 的console 中配置的補(bǔ) 充: 在weblogic10R3 中配置方法: 登錄console 之后,部署>選擇對(duì)應(yīng)的應(yīng)用(如 undwrt)>配置>改完后保存,會(huì)另存為其他的xml 文件,如下圖流程。 五. s ession 與cookie 的詳細(xì)說明 具體來說cookie 機(jī)制采用的是在客戶端保持狀態(tài)的方案,而session 機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案 同時(shí)我們也看到,由于采用服務(wù)器端保持狀態(tài)的方案在客戶端也需要保存一個(gè)標(biāo)識(shí),所以session 機(jī)制可能需要借助于cookie 機(jī)制來達(dá)到保存標(biāo)識(shí)的目的,但實(shí)際上它還有其他選擇。 cookie 的內(nèi)容主要包括:名字,值,過期時(shí)間,路徑和域。 其中域可以指定某一個(gè)域比如.google.com ,相當(dāng)于總店招牌,比如寶潔公司,也可以指定一個(gè)域下的具體某臺(tái)機(jī)器比如www.google.com 或者froogle.google.com ,可以用飄柔來做比。 路徑就是跟在域名后面的URL 路徑,比如/或者/foo等等,可以用某飄柔專柜做比。 路徑與域合在一起就構(gòu)成了cookie 的作用范圍。 如果不設(shè)置過期時(shí)間,則表示這個(gè)cookie 的生命期為瀏覽器會(huì)話期間,只要關(guān)閉瀏覽器窗口,cookie 就消失了。這種生命期為瀏覽器會(huì)話期的 cookie被稱為會(huì)話cookie 。會(huì)話cookie 一般不存儲(chǔ)在硬盤上而是保存在內(nèi)存里,當(dāng)然這種行為并不是規(guī)范規(guī)定的。如果設(shè)置了過期時(shí)間,瀏覽器就會(huì)把cookie 保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些cookie 仍然有效直到超過設(shè)定的過期時(shí)間。 存儲(chǔ)在硬盤上的cookie 可以在不同的瀏覽器進(jìn)程間共享,比如兩個(gè)IE 窗口。而對(duì)于保存在內(nèi)存里的cookie ,不同的瀏覽器有不同的處理方式。對(duì)于IE ,在一個(gè)打開的窗口上按Ctrl-N (或者從文件菜單)打開的窗口可以與原窗口共享,而使用其他方式新開的IE 進(jìn)程則不能共享已經(jīng)打開的窗口的內(nèi)存cookie ;對(duì)于Mozilla Firefox0.8,所有的進(jìn)程和標(biāo)簽頁都可以共享同樣的cookie 。一般來說是用javascript 的window.open 打開的窗口會(huì)與原窗口共享內(nèi)存cookie 。瀏覽器對(duì)于會(huì)話cookie 的這種只認(rèn)cookie 不認(rèn)人的處理方式經(jīng)常給采用session 機(jī)制的web 應(yīng)用程序開發(fā)者造成很大的困擾。 [經(jīng)典的語錄] 下面就是一個(gè)goolge 設(shè)置cookie 的響應(yīng)頭的例子 HTTP/1.1 302 Found Location: http://www.google.com/intl/zh-CN/ Set-Cookie: PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com Content-Type: text/html 到時(shí)候我們的域就要設(shè)置為domain=.*****.cn path=/ session 機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。 四、理解session 機(jī)制 session 機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。 當(dāng)程序需要為某個(gè)客戶端的請(qǐng)求創(chuàng)建一個(gè)session 的時(shí)候,服務(wù)器首先檢查這個(gè)客戶端的請(qǐng)求里是否已包含了一個(gè)session 標(biāo)識(shí) - 稱為session id,如果已包含一個(gè)session id則說明以前已經(jīng)為此客戶端創(chuàng)建過session ,服務(wù)器就按照session id把這個(gè)session 檢索出來使用(如果檢索不到,可能會(huì)新建一個(gè)),如果客戶端請(qǐng)求不包含session id,則為此客戶端創(chuàng)建一個(gè)session 并且生成一個(gè)與此session 相關(guān)聯(lián)的session id,session id的值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個(gè)session id將被在本次響應(yīng)中返回給客戶端保存。 保存這個(gè)session id 的方式可以采用cookie ,這樣在交互過程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)揮給服務(wù)器。一般這個(gè)cookie 的名字都是類似于 SEEESIONID,而。比如weblogic 對(duì)于web 應(yīng)用程序生成的 cookie, J SESSION ID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是J SESSION ID 。 由于cookie 可以被人為的禁止,必須有其他機(jī)制以便在cookie 被禁止時(shí)仍然能夠把session id 傳遞回服務(wù)器。經(jīng)常被使用的一種技術(shù)叫做URL 重寫,就是把session id 直接附加在URL 路徑的后面,附加方式也有兩種,一種是作為URL 路徑的附加信息,表現(xiàn)形式為http://..... /xxx;jsession id=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 另一種是作為查詢字符串附加在URL 后面,表現(xiàn)形式為 這兩種方式對(duì)于用戶來說是沒有區(qū)別的,只是服務(wù)器在解析的時(shí)候處理的方式不同,采用第一種方式也有利于把session id的信息和正常程序參數(shù)區(qū)分開來。 為了在整個(gè)交互過程中始終保持狀態(tài),就必須在每個(gè)客戶端可能請(qǐng)求的路徑后面都包含這個(gè)session id。 另一種技術(shù)叫做表單隱藏字段。就是服務(wù)器會(huì)自動(dòng)修改表單,添加一個(gè)隱藏字段,以便在表單提交時(shí)能夠把session id傳遞回服務(wù)器。比如下面的表單
在被傳遞給客戶端之前將被改寫成
這種技術(shù)現(xiàn)在已較少應(yīng)用,筆者接觸過的很古老的iPlanet6(SunONE應(yīng)用服務(wù)器的前身) 就使用了這種技術(shù)。
實(shí)際上這種技術(shù)可以簡單的用對(duì)action 應(yīng)用URL 重寫來代替。
,在談?wù)搒ession 機(jī)制的時(shí)候,常常聽到這樣一種誤解“只要關(guān)閉瀏覽器,session 就消失了”。其實(shí)可以想象一下會(huì)員卡的例子,除非顧客主動(dòng)對(duì)店家提出銷卡,否則店家絕對(duì)不會(huì)輕易刪除顧客的資料。對(duì)session 來說也是一樣的,除非程序通知服務(wù)器刪除一個(gè)session ,否則服務(wù)器會(huì)一直保留,程序一般都是在用戶做log off 的時(shí)候發(fā)個(gè)指令去刪除session 。然而瀏覽器從來不會(huì)主動(dòng)在關(guān)閉之前通知服務(wù)器它將要關(guān)閉,因此服務(wù)器根本不會(huì)有機(jī)會(huì)知道瀏覽器已經(jīng)關(guān)閉,之所以會(huì)有這種錯(cuò)覺,是大部分session 機(jī)制都使用會(huì)話cookie 來保存session id,而關(guān)閉瀏覽器后這個(gè)session id就消失了,再次連接服務(wù)器時(shí)也就無法找到原來的session 。如果服務(wù)器設(shè)置的cookie 被保存到硬盤上,或者使用某種手段改寫瀏覽器發(fā)出的 HTTP請(qǐng)求頭,把原來的session id發(fā)送給服務(wù)器,則再次打開瀏覽器仍然能夠找到原來的session 。
恰恰是由于關(guān)閉瀏覽器不會(huì)導(dǎo)致session 被刪除,迫使服務(wù)器為seesion 設(shè)置了一個(gè)失效時(shí)間,當(dāng)距離客戶端上一次使用session 的時(shí)間超過這個(gè)失效時(shí)間時(shí),服務(wù)器就可以認(rèn)為客戶端已經(jīng)停止了活動(dòng),才會(huì)把session 刪除以節(jié)省存儲(chǔ)空間。
[寫得太精彩了。感受太深了!]
1、session 在何時(shí)被創(chuàng)建
一個(gè)常見的誤解是以為session 在有客戶端訪問時(shí)就被創(chuàng)建,然而事實(shí)是直到某server 端程序調(diào)用 HttpServletRequest.getSession(true)這樣的語句時(shí)才被創(chuàng)建,注意如果JSP 沒有顯示的使用 <@page session="false"> 關(guān)閉session ,則JSP 文件在編譯成Servlet 時(shí)將會(huì)自動(dòng)加上這樣一條語句HttpSession session =
HttpServletRequest.getSession(true);這也是JSP 中隱含的session 對(duì)象的來歷。
由于session 會(huì)消耗內(nèi)存資源,因此,如果不打算使用session ,應(yīng)該在所有的JSP 中關(guān)閉它。
2、session 何時(shí)被刪除
綜合前面的討論,session 在下列情況下被刪除a. 程序調(diào)用HttpSession.invalidate();或b. 距離上一次收到客戶端發(fā)送的session id時(shí)間間隔超過了session 的超時(shí)設(shè)置; 或c. 服務(wù)器進(jìn)程被停止(非持久session )
3、如何做到在瀏覽器關(guān)閉時(shí)刪除session
嚴(yán)格的講,做不到這一點(diǎn)??梢宰鲆稽c(diǎn)努力的辦法是在所有的客戶端頁面里使用javascript 代碼window.oncolose 來監(jiān)視瀏覽器的關(guān)閉動(dòng)作,然后向服務(wù)器發(fā)送一個(gè)請(qǐng)求來刪除session 。但是對(duì)于瀏覽器崩潰或者強(qiáng)行殺死進(jìn)程這些非常規(guī)手段仍然無能為力。
7、開兩個(gè)瀏覽器窗口訪問應(yīng)用程序會(huì)使用同一個(gè)session 還是不同的session
參見第三小節(jié)對(duì)cookie 的討論,對(duì)session 來說是只認(rèn)id 不認(rèn)人,因此不同的瀏覽器,不同的窗口打開方式以及不同的cookie 存儲(chǔ)方式都會(huì)對(duì)這個(gè)問題的答案有影響。
8、如何防止用戶打開兩個(gè)瀏覽器窗口操作導(dǎo)致的session 混亂
這個(gè)問題與防止表單多次提交是類似的,可以通過設(shè)置客戶端的令牌來解決。就是在服務(wù)器每次生成一個(gè)不同的id 返回給客戶端,同時(shí)保存在session 里,客戶端提交表單時(shí)必須把
,這個(gè)id 也返回服務(wù)器,程序首先比較返回的id 與保存在 session里的值是否一致,如果不一致則說明本次操作已經(jīng)被提交過了。[對(duì)不起你已經(jīng)投過票了!可以這樣來進(jìn)行控制的哦]
八、總結(jié)
session 機(jī)制本身并不復(fù)雜,然而其實(shí)現(xiàn)和配置上的靈活性卻使得具體情況復(fù)雜多變。這也要求我們不能把僅僅某一次的經(jīng)驗(yàn)或者某一個(gè)瀏覽器,服務(wù)器的經(jīng)驗(yàn)當(dāng)作普遍適用的經(jīng)驗(yàn),而是始終需要具體情況具體分析。
為什么登陸后, 只要不關(guān)閉瀏覽器,session 就能一直存在? 當(dāng)然session 的數(shù)據(jù)是保存在服務(wù)器上的, 但服務(wù)器是怎么識(shí)別這些數(shù)據(jù)都是誰的呢? 答案是sessionid, 每一個(gè)瀏覽者都唯一的sessionid, 這就很好的區(qū)分了不同瀏覽者的不同session 了.sessionid 是怎么產(chǎn)生的? 應(yīng)該是第一次訪問服務(wù)器的時(shí)候隨即生成的. 假如是111, 然后他的登陸信息是true, 服務(wù)器就知道sessionid 為111已經(jīng)登陸了, 這些信息都存在了服務(wù)器上了. 但當(dāng)瀏覽者繼續(xù)操作的時(shí)候, 也就是打開該系統(tǒng)的另一個(gè)頁面的時(shí)候sessionid 怎么辦? 如何傳遞? 打開另一個(gè)頁面的時(shí)候其實(shí)相當(dāng)于重新訪問系統(tǒng), 如果沒有特殊的處理機(jī)制, 系統(tǒng)會(huì)再次重新分配一個(gè)
sessionid 的, 這樣的話就失去意義了~!所以sessionid 在第一次訪問后應(yīng)該存在了客戶端. 能寸哪呢? 當(dāng)然, 只能寸在cookie 中了, 這就是為什么關(guān)閉cookie,session 就失去作用了
十三、保存session id的幾種方式
A .保存session id的方式可以采用cookie ,這樣在交互過程中瀏覽器可以自動(dòng)的按照規(guī)則把這個(gè)標(biāo)識(shí)發(fā)送給服務(wù)器。
B .由于cookie 可以被人為的禁止,必須有其它的機(jī)制以便在cookie 被禁止時(shí)仍然能夠把session id傳遞回服務(wù)器,經(jīng)常采用的一種技術(shù)叫做URL 重寫,就是把session id附加在URL 路徑的后面,附加的方式也有兩種,一種是作為URL 路徑的附加信息,另一種是作為查詢字符串附加在URL 后面。網(wǎng)絡(luò)在整個(gè)交互過程中始終保持狀態(tài),就必須在每個(gè)客戶端可能請(qǐng)求的路徑后面都包含這個(gè)session id。
C .另一種技術(shù)叫做表單隱藏字段。就是服務(wù)器會(huì)自動(dòng)修改表單,添加一個(gè)隱藏字段,以便在表單提交時(shí)能夠把session id傳遞回服務(wù)器。
二十五、session cookie和session 對(duì)象的生命周期是一樣的嗎
當(dāng)用戶關(guān)閉了瀏覽器雖然session cookie已經(jīng)消失,但session 對(duì)象仍然保存在服務(wù)器端
二十六、是否只要關(guān)閉瀏覽器,session 就消失了
,程序一般都是在用戶做log off 的時(shí)候發(fā)個(gè)指令去刪除session ,然而瀏覽器從來不會(huì)主動(dòng)在關(guān)閉之前通知服務(wù)器它將要被關(guān)閉,因此服務(wù)器根本不會(huì)有機(jī)會(huì)知道瀏覽器已經(jīng)關(guān)閉。服務(wù)器會(huì)一直保留這個(gè)會(huì)話對(duì)象直到它處于非活動(dòng)狀態(tài)超過設(shè)定的間隔為止。
之所以會(huì)有這種錯(cuò)誤的認(rèn)識(shí),是因?yàn)榇蟛糠謘ession 機(jī)制都使用會(huì)話cookie 來保存session id ,而關(guān)閉瀏覽器后這個(gè)session id就消失了,再次連接到服務(wù)器時(shí)也就無法找到原來的session 。
如果服務(wù)器設(shè)置的cookie 被保存到硬盤上,或者使用某種手段改寫瀏覽器發(fā)出的HTTP 請(qǐng)求報(bào)頭,把原來的session id 發(fā)送到服務(wù)器,則再次打開瀏覽器仍然能夠找到原來的session 。 恰恰是由于關(guān)閉瀏覽器不會(huì)導(dǎo)致session 被刪除,迫使服務(wù)器為session 設(shè)置了一個(gè)失效時(shí)間,當(dāng)距離客戶上一次使用session 的時(shí)間超過了這個(gè)失效時(shí)間時(shí),服務(wù)器就可以認(rèn)為客戶端已經(jīng)停止了活動(dòng),才會(huì)把session 刪除以節(jié)省存儲(chǔ)空間。
由此我們可以得出如下結(jié)論:
關(guān)閉瀏覽器,只會(huì)是瀏覽器端內(nèi)存里的session cookie消失,但不會(huì)使保存在服務(wù)器端的session 對(duì)象消失,同樣也不會(huì)使已經(jīng)保存到硬盤上的持久化cookie 消失。
二十七、打開兩個(gè)瀏覽器窗口訪問應(yīng)用程序會(huì)使用同一個(gè)session 還是不同的session
通常session cookie是不能跨窗口使用的,當(dāng)你新開了一個(gè)瀏覽器窗口進(jìn)入相同頁面時(shí),系統(tǒng)會(huì)賦予你一個(gè)新的session id,這樣我們信息共享的目的就達(dá)不到了。
此時(shí)我們可以先把session id 保存在persistent cookie 中(通過設(shè)置session 的最大有效時(shí)間) ,然后在新窗口中讀出來,就可以得到上一個(gè)窗口的session id 了,這樣通過session cookie 和persistent cookie的結(jié)合我們就可以實(shí)現(xiàn)了跨窗口的會(huì)話跟蹤。
2.cookies 的屬性有:Domain(域) :哪個(gè)站點(diǎn)發(fā)的哪個(gè)站點(diǎn)拿走
Expires:是否過期
Haskeys:是否包含關(guān)鍵
path:存放的路徑
secure:是否安全
注:---cookies 的設(shè)置在 sever端設(shè)置,路徑與域一起構(gòu)成cookie 的作用范圍
? 這個(gè)是什么意思的???為什么會(huì)是在服務(wù)器端進(jìn)行設(shè)置的呢?
---若不設(shè)置過期時(shí)間,則表示這個(gè)cookie 的生命期為瀏覽器會(huì)話期間,關(guān)閉瀏覽器窗口,cookie 就消失。這種生命期為瀏覽器會(huì)話期的cookie 被稱為會(huì)話cookie 。會(huì)話cookie 一般不存儲(chǔ)在硬盤上而是保存在內(nèi)存里,當(dāng)然這種行為并不是規(guī)范規(guī)定的。若設(shè)置了過期時(shí)間,瀏覽器就會(huì)把cookie 保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些cookie 仍然有效