web
會話狀態的維持
什麼人該閱讀本文?
如果你對以下問題感興趣但是又不能確切的回答,你就應該閱讀此文.
1.session是什麼?
2.cookie又是什麼?
3.如果完全禁用了cookies,session還起作用嗎?
4.為什麼有的**登入一次以後就不用再登入?
5.asp中的session是否依賴cookie?
6.jsp中的session是否依賴cookie?
7.asp.net中的session又是怎麼回事?
下面將詳細的講述會話狀態的維持,看完之後你應該可以回答上面的幾個問題了
1.session和cookie的由來
這裡我不區分cookie和cookies,只是乙個複數形式而已.我們都知道http是無狀態的協議,就是說每次請求都是分開的,伺服器根本不知道兩次請求欠袷峭桓鋈?如果我們的內容是完全公開的,也就是所有內容誰都可以看(比如sina的新聞),這種情況呀根本就沒有必要知道兩次請求是不是同乙個.但是大部分情況下我們不希望這樣,我們希望只有會員登入之後才能訪問(所有的論壇幾乎都是這樣).而其他人不允許他們反問,於是便要知道每次請求的是不是同乙個人,這就是會話,也就是乙個session,而且這個session是以cookie為基礎的,cookie最才是網景公司提出的,也叫小甜餅.
伺服器端對每個請求維持乙個會話,並且有乙個唯一的sessionid.如果客戶端沒有禁用cookie的話,客戶第一次請求的時候這個id會寫到客戶端的硬碟上(不相信?看一下資料夾c:/documents and settings/username/local settings/temporary internet files 下的cookie檔案,都是文字檔案).以後你每次請求的時候都會加上這個id值,伺服器端就可以知道是不是同乙個請求了.如果還不相信的話,你可以這樣做個試驗:
1.選擇乙個你要用使用者名稱登入的**(最好是asp的,如論壇).
2.先正常登入一遍,確定可以登入,再把瀏覽器關了)
3.選擇internet選項(ie屬性頁),選擇隱藏選項卡,把設定調到最高,確定.
4.重新開ie,登入你剛才登入過的站點,怎麼登都等不上去的.
2.session和cookie的關係
當前維持會話狀態的途徑有且只有兩種種
第一種:cookie,最常見的,95%以上的會話都是cookie的功勞.
第二種:url重寫,把sessionid附加到url中,jsp實現了但用的不多.
如果你用過session,你可能很奇怪:我們一般都是用session維持會話,這裡怎麼沒有?
答案很簡單:上面兩種都是途徑,session是我們的目的.一句話概括session和cookie的關係:cookie是維持session最常見的一種途徑.
3.cookie的過期和session的超時
你可以自己設定cookie的過期(其實是伺服器替你設定的),如果你設定為用不過期,
以後就都不用再重新登陸了,如果這台機器就你乙個人用完全可以這樣設定,否則
最好不要這樣設定.如果你很長時間沒有反應,就是沒有新的請求,session就有可能
過期,你可能遇到這樣的情況:明明已經登入了,過了一會兒回來卻說我沒有登入
提示重新登入.就是因為session過期了,伺服器可以設定過期的時間.
4.禁用了cookie如何實現會話
如果客戶端完全禁用cookie,將會發生什麼現象:
對於asp,無法跟蹤會話,也就是每個請求都當作新的請求.
對於jsp,可以通過重寫url實現會話,session.encodeurl(string path)
session.encodeurl("index.jsp")=index.jsp;jsessionid=431d980051204fc8dc3
bf
75840f
7af71
可以看到後面的sessionid並沒有包括在querystring中(在?後面)
對於asp.net 同樣支援重寫url,學習jsp的,不過jsp並不是所有的webserver都支援重寫url
5.querystring和hiddenform
你可能覺得他們也可以維持會話,但是事實上是不可以的,他們只能傳遞引數。不過在asp.net中的伺服器事?/span>
web會話狀態維持
url 什麼人該閱讀本文?如果你對以下問題感興趣但是又不能確切的回答,你就應該閱讀此文 1.session是什麼?2.cookie又是什麼?3.如果完全禁用了cookies,session還起作用嗎?4.為什麼有的 登入一次以後就不用再登入?5.asp中的session是否依賴cookie?6.js...
Session物件 會話維持
session 在計算機中,尤其是在網路應用中,稱為 會話控制 session 物件儲存特定使用者會話所需的屬性及配置資訊。在 requests 中,如果直接利用 get 或 post 等方法的確可以做到模擬網頁的請求,但是這實際上是相當於不同的會話,也就是說相當於你用了兩個瀏覽器開啟了不同的頁面。...
狀態維持在web層 每層都可以Cache
api閘道器的開源解決方案那麼多,為什麼我們卻還要選擇自研?sdk.cn 中國領先的開發者服務平台 技術細節 microservice soa 狀態維持在web層 spring session redis 每層都可以cache spring cache redis 讀寫分離在框架層面實現 mybaf...