<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综合色区无码一区| 丁香花免费完整高清观看| 免费一区二区三区在线视频| 久久丫精品国产亚洲av不卡 | 国内少妇偷人精品视频免费| 亚洲区视频在线观看| 免费在线观看a级毛片| 91香蕉国产线观看免费全集| 国产精品亚洲精品久久精品| 亚洲天堂男人天堂| 色吊丝永久在线观看最新免费| 两个人看的www免费| 亚洲国产精品无码久久98| 亚洲第一AAAAA片| 国产成人免费全部网站| 最近免费最新高清中文字幕韩国| 免费精品视频在线| 亚洲娇小性色xxxx| 亚洲国产精彩中文乱码AV| 四虎永久成人免费| a毛片基地免费全部视频| 中文字幕无码毛片免费看| 337p日本欧洲亚洲大胆人人| 亚洲在成人网在线看| 亚洲精品乱码久久久久久| 国产免费黄色大片| 99久久免费精品国产72精品九九 | 国产99视频免费精品是看6| 久久精品国产这里是免费| 一级毛片无遮挡免费全部| 亚洲人成网站色7799| 亚洲欧洲自拍拍偷午夜色| 亚洲精品无码国产| 亚洲人成色7777在线观看不卡| 日本一区免费电影| 欧美大尺寸SUV免费| 免费黄色福利视频|