<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 60,comments - 71,trackbacks - 0

    本文來自:http://onewww.net/blog/article.asp?id=38

    今天突然發現我對Session有很大的誤解.
    一句話就是,一般情況下Session是需要Cookie支持的!
    大家都知道Session是在服務器端保存客戶狀態的,只要瀏覽器不關閉,就可以一直保存該用戶的信息,通常用做來保存是否登陸信息等.而Cookie與其剛好相反,它將信息保存到客戶端,它是寫入文件的,俗成小甜點..
    今天做了個程序,是判斷是否登陸成功的,沒有使用Cookie,而全部使用的Session機制實現的.本來很好用,可吃完午飯后,突發起想的把瀏覽器的cookie禁止了,這時候產生了一件讓我很驚訝的事情session竟然不好用了,也就是說,無論我怎么登陸系統,系統都認為我沒有登陸! 當我把cookie打開后session就好用了,系統也恢復正常了?!這是怎么會事?感覺我和思維中的某種原則性的東西沖突了
    于是決定好好研究下.
    為什么登陸后,只要不關閉瀏覽器,session就能一直存在?當然session的數據是保存在服務器上的,但服務器是怎么識別這些數據都是誰的呢?答案是sessionid,每一個瀏覽者都唯一的sessionid,這就很好的區分了不同瀏覽者的不同session了.sessionid是怎么產生的?應該是第一次訪問服務器的時候隨即生成的.假如是111,然后他的登陸信息是true,服務器就知道sessionid為111已經登陸了,這些信息都存在了服務器上了.但當瀏覽者繼續操作的時候,也就是打開該系統的另一個頁面的時候sessionid怎么辦?如何傳遞?打開另一個頁面的時候其實相當于重新訪問系統,如果沒有特殊的處理機制,系統會再次重新分配一個sessionid的,這樣的話就失去意義了~!所以sessionid在第一次訪問后應該存在了客戶端.能寸哪呢?當然,只能寸在cookie中了,這就是為什么關閉cookie,session就失去作用了
    找到這么個例子來描述cookie session的關系再恰當不過了
    一家咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。想象一下其實也無外乎下面的幾種方案:
    1、該店的店員很厲害,能記住每位顧客的消費數量,只要顧客一走進咖啡店,店員就知道該怎么對待了。這種做法就是協議本身支持狀態。
    2、發給顧客一張卡片,上面記錄著消費的數量,一般還有個有效期限。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以后的消費相聯系起來。這種做法就是在客戶端保持狀態。
    3、發給顧客一張會員卡,除了卡號之外什么信息也不紀錄,每次消費時,如果顧客出示該卡片,則店員在店里的紀錄本上找到這個卡號對應的紀錄添加一些消費信息。這種做法就是在服務器端保持狀態。
    第一種情況暫時不考慮.看第二種情況,卡片無疑就是cookie了,所有的數據如果都存在卡片上是不安全的,也是容易遺失的(卡片被修改了?卡片遺失了?這都是有可能的).所以才用了第三種情況.客戶除了個會員號再什么信息也沒有,這是最安全的,但這個會員號必須是客戶自己知道的!也就是cookie中必須存儲的.
    這樣解釋我今天中午遇到的情況就不驚訝了.

    無cookie的解決辦法是利用URL重寫技術,就是把sessionid的數據保存在url后面http://onewww.net/a.asp?sessionid=111
    在.net中,可以用Web.config配置
    就是把cookieless="false"改為:cookieless="true"就可以了
    還有一種方法是利用表單隱藏字段技術,就是加個input type='hide'的元素.這中技術也在.Net中大量使用,尤其是.Net中的控件.個人很不喜歡這種技術,因為加大了流量(數據都是加密的.體積成倍增加)

    默認情況下session是存在inetinfo.exe進程中的
    .Net中session是可以存在sql server中的,很強

    PS:
    今天看到firefox2支持客戶端Session保存,我理解的是不利用cookie了,直接就支持.其實IE很早就支持了!只是沒有普及.應該是個很好的技術.以前看過,忘記在哪看的了,以后找到再補充上來.現在firefox也支持了,估計又要掀起一次小小的革命了.哈哈.個人觀點
    firefox 2支持session的英文資料 我是看不明白地..
    http://www.whatwg.org/specs/web-apps/current-work/#scs-client-side

    真是一篇好文,呵呵,收藏了.
    posted on 2008-06-19 09:23 henry1451 閱讀(1551) 評論(0)  編輯  收藏 所屬分類: Jsp,Js,Ajax,Html技術
    主站蜘蛛池模板: 亚洲成AV人片在线播放无码| 成年18网站免费视频网站| 亚洲精品综合久久| WWW国产亚洲精品久久麻豆| 女人让男人免费桶爽30分钟| 亚洲性线免费观看视频成熟| 久久久久久久免费视频| 亚洲第一永久在线观看| 4455永久在线观免费看| 精品日韩亚洲AV无码一区二区三区 | 91免费福利精品国产| 亚洲日本va午夜中文字幕一区| 中文字幕无码一区二区免费| 美女被免费视频网站a| 6080午夜一级毛片免费看| 亚洲国产精品lv| 久久亚洲免费视频| 亚洲欧洲日韩不卡| 69av免费观看| 亚洲中文字幕乱码熟女在线| 韩国18福利视频免费观看| 另类小说亚洲色图| 久久精品国产精品亚洲下载| 99精品视频免费| 久久夜色精品国产噜噜噜亚洲AV| 久久久免费精品re6| 亚洲中文字幕久久精品无码A | 在线观看www日本免费网站| 亚洲国产成人精品激情| 尤物永久免费AV无码网站| 一级女性全黄久久生活片免费 | 亚洲成人中文字幕| 成人免费午夜在线观看| 国产精品亚洲综合| 国产亚洲成AV人片在线观黄桃| 最近中文字幕大全免费视频| 亚洲综合av一区二区三区不卡| 亚洲国产精品人人做人人爽| 日韩在线不卡免费视频一区| 亚洲色www永久网站| 亚洲七七久久精品中文国产|