日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

session过期重新登陆_深入分析Session和Cookie-前端面试题

發(fā)布時間:2025/3/20 HTML 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 session过期重新登陆_深入分析Session和Cookie-前端面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Web發(fā)展史中,我們知道瀏覽器與服務器間采用的是http協議,而這種協議是無狀態(tài)的,所以這就導致了服務器無法知道是誰在瀏覽網頁,但很明顯,一些網頁需要知道用戶的狀態(tài),例如登陸,購物車等。

所以為了解決這一問題,先后出現了四種技術,分別是隱藏表單域,URL重寫,cookie,session,而用的最多也是比較重要的就是cookie和session了。

Cookie是什么

cookie是瀏覽器保存在用戶電腦上的一小段文本,通俗的來講就是當一個用戶通過 http訪問到服務器時,服務器會將一些 Key/Value鍵值對返回給客戶端瀏覽器,并給這些數據加上一些限制條件,在條件符合時這個用戶下次訪問這個服務器時,數據通過請求頭又被完整地被帶回服務器,服務器根據這些信息來判斷不同的用戶。

也就是說, cookie是服務器傳給客戶端并保存在客戶端的一段信息,這個 Cookie是有大小,數量限制的!!

Cookie的創(chuàng)建

當前 Cookie有兩個版本,分別對應兩種設置響應頭:“Set-Cookie”和 “Set-Cookie2”。在Servlet中并不支持Set-Cookie2,所以我們來看看Set-Cookie的屬性項:

這些屬性項,其他的都說的很清楚了,我們來看看Domain有什么用:

現在,我們假設這里有兩個域名:

域名A:a.b.f.com.cn 域名B:c.d.f.com.cn

顯然,域名A和域名B都是 f.com.cn的子域名

  • 如果我們在域名A中的Cookie的domain設置為f.com.cn,那么f.com.cn及其子域名都可以獲取這個Cookie,即域名A和域名B都可以獲取這個Cookie
  • 如果域名A和域名B同時設置Cookie的doamin為f.com.cn,那么將出現覆蓋的現象
  • 如果域名A沒有顯式設置Cookie的domain方法,那么domain就為a.b.f.com.cn,不一樣的是,這時,域名A的子域名將無法獲取這個Cookie

好的,現在了解完了Set-Cookie的屬性項,開始創(chuàng)建Cookie

Web服務器通過發(fā)送一個稱為Set-Cookie的http消息來創(chuàng)建一個Cookie:

Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]

這里我們思考一個問題,當我們在服務器創(chuàng)建多個Cookie時,這些Cookie最終是在一個Header項中還是以獨立的Header存在的呢?

我們可以看到,構建http返回字節(jié)流時是將Header中所有的項順序寫出,而沒有進行任何修改。所以可以想象在瀏覽器在接收http返回的數據時是分別解析每一個Header項。

接著,在客戶端進行保存,如何保存呢?這里又要對Cookie進行進一步的了解

Cookie的分類

  • 會話級別Cookie:所謂會話級別Cookie,就是在瀏覽器關閉之后Cookie就會失效。
  • 持久級別Cookie:保存在硬盤的Cookie,只要設置了過期時間就是硬盤級別Cookie。

好的,現在cookie保存在了客戶端,當我們去請求一個URL時,瀏覽器會根據這個URL路徑將符合條件的Cookie放在請求頭中傳給服務器。


Session

Cookie是有大小限制和數量限制的,并且越來越多的Cookie代表客戶端和服務器的傳輸量增加,可不可以每次傳的時候不傳所有cookie值,而只傳一個唯一ID,通過這個ID直接在服務器查找用戶信息呢?答案是有的,這就是我們的session。

Session是基于Cookie來工作的,同一個客戶端每次訪問服務器時,只要當瀏覽器在第一次訪問服務器時,服務器設置一個id并保存一些信息(例如登陸就保存用戶信息,視具體情況),并把這個id通過Cookie存到客戶端,客戶端每次和服務器交互時只傳這個id,就可以實現維持瀏覽器和服務器的狀態(tài),而這個ID通常是NAME為JSESSIONID的一個Cookie。

實際上,有四種方式讓Session正常工作:

  • 通過URL傳遞SessionID
  • 通過Cookie傳遞SessionID
  • 通過SSL傳遞SessionID
  • 通過隱藏表單傳遞SessionID

第一種情況:

當瀏覽器不支持Cookie功能時,瀏覽器會將用戶的SessionCookieName(默認為JSESSIONID)重寫到用戶請求的URL參數中。格式:/path/Servlet;name=value;name2=value2?Name3=value3

第三種情況:

會根據javax.servlet.request.ssl_session屬性值設置SessionID。

注:如果客戶端支持Cookie,又通過URL重寫,Tomcat仍然會解析Cookie中的SessionID并覆蓋URL中的SessionID


session工作原理

先看session工作的時序圖

一、創(chuàng)建session

當客戶端訪問到服務器,服務器會為這個客戶端通過request.getSession()方法創(chuàng)建一個Session,如果當前SessionID還沒有對應的HttpSession對象,就創(chuàng)建一個新的,并添加到org.apache.catalina.Manager的sessions容器中保存,這就做到了對狀態(tài)的保持。當然,這個SessionID是唯一的

二、session保存

由圖可知,session對象已經保存在了Manager類中,StandardManager作為實現類,通過requestedSessionId從StandardManager的sessions集合中取出StandardSession對象。

我們來看看StandardManager是如何對所有StandardSession對象進行生命周期管理

當Servlet容器關閉:

StandardManager將持久化沒過期的StandardSession對象(必須調用Servlet容器中的stop和start命令,不能直接kill)

當Servlet容器重啟時:

StandardManager初始化會重讀這個文件,解析出所有session對象。

三、session的銷毀

這里有一個誤區(qū),也是我之前的錯誤理解,就是我將session的生命周期理解成一次會話,瀏覽器打開就創(chuàng)建,瀏覽器關閉就銷毀,這樣理解是錯的!!

session的聲明周期是從創(chuàng)建到超時過期

也就是說,當session創(chuàng)建后,瀏覽器關閉,會話級別的Cookie被銷毀,如果沒有超過設定時間,該SessionID對應的session是沒有被銷毀的,

檢查session失效

檢查每個Session是否失效是在Tomcat的一個后臺線程完成的(backgroundProcess()方法中);除了后臺進程檢驗session是否失效外,調用request.getSession()也會檢查該session是否過期,當然,調用這種方法如果過期的話又會重新創(chuàng)建一個新的session。

小 結

二者的異同

相同點(有關系的地方):

  • Session和Cookie都是為了讓http協議有狀態(tài)而存在
  • Session通過Cookie工作,Cookie傳輸的SessionID讓Session知道這個客戶端到底是誰

不同點:

  • Session將信息保存到服務器,Cookie將信息保存在客戶端

工作流程

當瀏覽器第一次訪問服務器時,服務器創(chuàng)建Session并將SessionID通過Cookie帶給瀏覽器保存在客戶端,同時服務器根據業(yè)務邏輯保存相應的客戶端信息保存在session中;客戶端在訪問時上傳Cookie,服務器得到Cookie后獲取里面的SessionID,來維持狀態(tài)。

總結

以上是生活随笔為你收集整理的session过期重新登陆_深入分析Session和Cookie-前端面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 自拍三级| 亚洲精品日韩在线 | 欧美另类v| 神马一区二区三区 | 亚洲涩视频 | 在线免费观看日韩视频 | 亚洲国产黄色片 | 成人女同在线观看 | 国产欧美日韩精品在线观看 | 亚洲人人夜夜澡人人爽 | 欧美日韩中文字幕一区二区三区 | 国产精品成熟老女人 | 一级肉体全黄毛片 | 免费一级a毛片夜夜看 | 人民的名义第二部 | 红色假期黑色婚礼2 | 国产xxx | 在线观看黄色的网站 | 91狠狠综合 | av网址在线看 | 99re伊人| 中文字幕av一区二区三区人妻少妇 | 欧美丰满少妇 | 手机av在线| 久久精品无码一区二区三区免费 | 欧美一区二区三区免费在线观看 | 台湾chinesehdxxxx少妇 | 久久久久久久久久久久久久久久久久久久 | 国产精品一区二区欧美 | 国产日韩欧美一区二区东京热 | 制服丝袜中文字幕在线 | 僵尸叔叔在线观看国语高清免费观看 | 国产中文字幕在线免费观看 | 美女吞精视频 | 国产乱码精品一区二三赶尸艳谈 | 先锋资源久久 | 成人国产av一区二区三区 | 天天干中文字幕 | 性色国产成人久久久精品 | 国产对白羞辱绿帽vk | 国内精品久久久久久久久 | 日韩在线视频看看 | 国产91精品高潮白浆喷水 | 国产日韩不卡 | 337p粉嫩日本欧洲亚洲大胆 | 精品无码一区二区三区电影桃花 | 国产乱人伦app精品久久 | 欧美aaa在线观看 | 国产精品自产拍在线观看 | 精品国产99久久久久久宅男i | 国产乱码精品一品二品 | 欧美一级不卡 | 无码人妻久久一区二区三区蜜桃 | 国产卡一卡二卡三 | 91精品网站 | 国产成人精品在线视频 | 国产精品无码一区二区桃花视频 | 色综合久久久无码中文字幕波多 | 99视频| 丰满人妻一区二区三区53号 | 超碰综合 | 中国超碰 | 国产jizz18女人高潮 | 精品人人妻人人澡人人爽牛牛 | 日韩激情av在线 | 污片在线免费观看 | 国产女主播一区 | 蜜臀av一区二区三区 | 狠狠操网址 | 欧美一区二区免费电影 | 免费日本黄色 | 国产人成 | 久久久久少妇 | 男女在线观看 | 中国一级特黄毛片 | 人物动物互动39集免费观看 | 国产五月婷婷 | 朴麦妮原版视频高清资源 | 91精品免费看| 一级性生活黄色片 | 视频一区二区三区精品 | 久久久久九九九九 | 成人精品一区二区三区电影黑人 | 都市激情国产精品 | 人体内射精一区二区三区 | 精品天堂 | 91亚洲欧美激情 | 色偷偷资源网 | 人人狠狠综合久久亚洲 | 国产精品久久久久久久久久久免费看 | 欧美一区二区三区不卡视频 | 浓精喷进老师黑色丝袜在线观看 | 欧美特级a | 欧美日韩激情视频在线观看 | 自慰无码一区二区三区 | www黄色| 中国女人真人一级毛片 | 蜜桃导航-精品导航 | 久久亚州|