成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Cookie 和 session詳解

wow_worktile / 2222人閱讀

摘要:協(xié)議是無(wú)狀態(tài)的,一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會(huì)關(guān)閉,再次交換建立新的連接,也就是說(shuō),服務(wù)器無(wú)法跟蹤會(huì)話。而和就是用與解決這種問(wèn)題。值得一提的是是建立在的基礎(chǔ)上創(chuàng)建的。注意在的文件中,設(shè)置了的生命周期最長(zhǎng)為分鐘。

在將cookie 和 session 之前需要先理解什么是會(huì)話
會(huì)話:
用戶打開(kāi)一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接,訪問(wèn)多個(gè)web資源,然后關(guān)閉瀏覽器,整個(gè)過(guò)程稱為一個(gè)會(huì)話。
http協(xié)議是無(wú)狀態(tài)的,一旦數(shù)據(jù)交換完畢,客戶端與服務(wù)器端的連接就會(huì)關(guān)閉,再次交換建立新的連接,也就是說(shuō),服務(wù)器無(wú)法跟蹤會(huì)話。而cookie 和 session 就是用與解決這種問(wèn)題。
1.什么是cookie
cookie是客戶端的技術(shù),程序把每個(gè)用戶數(shù)據(jù)以cookie的形式寫(xiě)給用戶各自的瀏覽器,當(dāng)客戶端再次訪問(wèn)服務(wù)器的時(shí)候,會(huì)帶著各自的Cookie過(guò)來(lái),這樣服務(wù)器就能處理各自用戶的數(shù)據(jù)了
1.1. 如何使用cookie

Cookie cookie = new Cookie("name","value"); //創(chuàng)建一個(gè)cookie
cookie.setPath("/"); //cookie記得一定要設(shè)定路徑,默認(rèn)是當(dāng)前的類(lèi)的路徑,設(shè)置/代表是整個(gè)web應(yīng)用。
cookie.setMaxAge(""); //設(shè)置有效期限,默認(rèn)是瀏覽器的進(jìn)程,也就是瀏覽器關(guān)了,就沒(méi)了。如果是設(shè)置為負(fù)數(shù),那么cookie不會(huì)被存儲(chǔ),并且會(huì)被刪除。如果設(shè)置為0,那么cookie會(huì)被刪除。(這些內(nèi)容在API上描述得非常清楚)
response.addCookie(cookie);//添加cookie,這樣才能回寫(xiě)給客戶端

以上的內(nèi)容就是關(guān)于如何去使用一個(gè)cookie了。
1.2. cookie的細(xì)節(jié)
根據(jù)API的描述,一個(gè)cookie最大為4KB.瀏覽器一般只允許存放300個(gè)cookie,每個(gè)站點(diǎn)最多存放20個(gè)Cookie。Cookie被創(chuàng)建的時(shí)候默認(rèn)使用Verssion 0 ,也就是http 1.0
1.2.1 cookie的刪除
在cookie的API中沒(méi)有刪除cookie的具體方法,但是我們可以通過(guò)設(shè)置cookie的生命周期,來(lái)講cookie刪除,設(shè)置為0代表刪除(詳解自行查看setMaxAge()方法)

cookie.setMaxAge(0);  
如果說(shuō)不想從request域中獲取cookie,然后將該cookie的生命周期設(shè)置為0,可以采用以下這個(gè)方法
Cookie cookie = new Cookie("想刪除的cooki名字","value");
cookie.setPath("");//此處路徑必須與想刪除的cookie一致
cookie.setMaxAge(0); 
response.addCookie(cookie);

1.3 cookie的獲取

request.getCookies(); //返回的是cookie的數(shù)組

以上就是cookie的常用方法。

1.4 cookie設(shè)置注釋

cookie.setComment("comment")

1.5 cookie 設(shè)置安全傳輸協(xié)議(例如 https ,ssl)

cookie.setSecure(true|false) 默認(rèn)為false 

1.6 cookie 防止 xss(跨站腳本攻擊) 攻擊

cookie.setHttpOnly(true)  // 高版本的 servlet Api中有提供此方法

當(dāng)將httpOnly設(shè)置為true時(shí),將無(wú)法通過(guò)js腳本獲取cookie信息。能夠有效的防止xss攻擊

2.什么是session
session是服務(wù)端的技術(shù),當(dāng)瀏覽器第1次訪問(wèn)web資源的時(shí)候,服務(wù)器會(huì)自動(dòng)為其創(chuàng)建一個(gè)session,并保存在服務(wù)器,當(dāng)需要保存用戶數(shù)據(jù)的時(shí)候,可以將數(shù)據(jù)寫(xiě)入session中。當(dāng)用戶訪問(wèn)其他程序的時(shí)候,就可以直接從session中取值。值得一提的是sesion是建立在cookie的基礎(chǔ)上創(chuàng)建的。

2.1 session實(shí)現(xiàn)原理
session的實(shí)現(xiàn)原理是建立在給瀏覽器回寫(xiě)cookie,并且是以JSESSIONID為鍵,但是這個(gè)cookie是沒(méi)有時(shí)間的,也就是說(shuō),當(dāng)你關(guān)閉瀏覽器時(shí),代表一個(gè)會(huì)話結(jié)束了,也就是說(shuō)你的session會(huì)被刪除,當(dāng)你再次訪問(wèn)服務(wù)器的時(shí)候,服務(wù)器會(huì)為你重新創(chuàng)建一個(gè)session。

2.2 session的使用

2.2.1 客戶端不禁用cookie的情況

HttpSession session = request.getSession();//客戶端訪問(wèn)服務(wù)器的時(shí)候,服務(wù)器會(huì)自動(dòng)創(chuàng)建一個(gè)session,如果客戶端沒(méi)有禁用cookie的話。
String sessionId = session.getId();
Cookie cookie = new Cookie("JSESSIONID",sessionId);
cookie.setPaht("/");
cookie.setMaxAge(30*60);//注意在tomcat的web.xml文件中,設(shè)置了session的生命周期最長(zhǎng)為30分鐘。
response.addCookie(cookie);
session.setAttribute("key","value");

2.2.2 客戶端禁用cookie的情況

如果客戶端禁用cookie,那么需要調(diào)用response的encodeURL("轉(zhuǎn)發(fā)的地址")
HttpSession session = request.getSession();
String url1 = response.encodeURL("xxxx");//注意,調(diào)用這個(gè)方法之前,必須要先獲取session,(在該方法的API描述得很清楚)
PrintWriter pw = response.getWriter();
pw.write(url1);

2.3 session的一些細(xì)節(jié)

設(shè)置session的生命周期

可以通過(guò)設(shè)置配置文件的形式,設(shè)置session的生命周期;在web.xml文件中添加如下代碼


    30//備注這里是以分鐘為單位


參考以下2篇博文:
https://my.oschina.net/kevina... 深入源碼剖析了session和cookie
http://blog.csdn.net/fangaoxi... 介紹了一些基本的知識(shí)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69841.html

相關(guān)文章

  • CookieSession詳解

    摘要:例如要想在多個(gè)二級(jí)域名中共享,需要設(shè)置為頂級(jí)域名,這樣就可以在所有二級(jí)域名里面或者到這個(gè)的值了。頂級(jí)域名只能獲取到設(shè)置為頂級(jí)域名的,設(shè)置為其他子級(jí)域名的無(wú)法獲取。 Cookie和Session詳解 Cookie Cookie只存儲(chǔ)在客服端 Cookie是什么:Cookies是web服務(wù)器存放在用戶硬盤(pán)的一段文本,Cookies允許一個(gè)wen站點(diǎn)在用戶的機(jī)器存放一些文本的信息,并可以在以...

    Little_XM 評(píng)論0 收藏0
  • 詳解 Cookie Session 關(guān)系區(qū)別

    摘要:目前大多數(shù)的應(yīng)用都是用實(shí)現(xiàn)跟蹤的。的安全性一般,他人可通過(guò)分析存放在本地的并進(jìn)行欺騙。在安全性第一的前提下,選擇更優(yōu)??紤]到減輕服務(wù)器性能方面,應(yīng)當(dāng)適時(shí)使用。因此,維持一個(gè)會(huì)話的核心就是客戶端的唯一標(biāo)識(shí),即。 showImg(https://segmentfault.com/img/bV8riL?w=800&h=444); 在技術(shù)面試中,經(jīng)常被問(wèn)到說(shuō)說(shuō)Cookie和Session的區(qū)別...

    microelec 評(píng)論0 收藏0
  • cookiesession的使用(詳解

    摘要:什么是用來(lái)存儲(chǔ)客戶端的一小段文本是一門(mén)客戶端的技術(shù)因?yàn)槭谴鎯?chǔ)在客戶端瀏覽器中的是為了實(shí)現(xiàn)客戶端與服務(wù)器端之間的狀態(tài)的保持技術(shù),不安全,不要使用存儲(chǔ)敏感信息比如登錄狀態(tài)和登錄信息一些敏感的數(shù)據(jù)應(yīng)該存儲(chǔ)在服務(wù)器端的值從哪里來(lái)的當(dāng)你訪問(wèn)一個(gè)網(wǎng)站這 什么是cookie, 用來(lái)存儲(chǔ)客戶端的一小段文本是一門(mén)客戶端的技術(shù) 因?yàn)閏ookie是存儲(chǔ)在客戶端瀏覽器中的是為了實(shí)現(xiàn) 客戶端與服務(wù)器端之間的狀態(tài)...

    liujs 評(píng)論0 收藏0
  • cookiesession詳解

    摘要:所謂的無(wú)連接就是服務(wù)器收到了客戶端的請(qǐng)求之后,響應(yīng)完成并收到客戶端的應(yīng)答之后,即斷開(kāi)連接。從而節(jié)省傳輸時(shí)間。協(xié)議對(duì)事務(wù)的處理沒(méi)有記憶能力。這種方式某種方面上講解放了服務(wù)器,但是卻不利于客戶端與服務(wù)器的連接。 session與cookie是什么? session與cookie屬于一種會(huì)話控制技術(shù).常用在身份識(shí)別,登錄驗(yàn)證,數(shù)據(jù)傳輸?shù)?舉個(gè)例子,就像我們?nèi)コ匈I(mǎi)東西結(jié)賬的時(shí)候,我們要拿出我...

    SwordFly 評(píng)論0 收藏0
  • 詳解 Cookie,Session,Token

    摘要:由于是存在客戶端上的,所以瀏覽器加入了一些限制確保不會(huì)被惡意使用,同時(shí)不會(huì)占據(jù)太多磁盤(pán)空間。簽名是對(duì)前兩部分的簽名,防止數(shù)據(jù)被篡改。的作用最開(kāi)始的初衷是為了實(shí)現(xiàn)授權(quán)和身份認(rèn)證作用的,可以實(shí)現(xiàn)無(wú)狀態(tài),分布式的應(yīng)用授權(quán)。 前言 無(wú)狀態(tài)的HTTP協(xié)議 很久很久之前, Web基本都是文檔的瀏覽而已。既然是瀏覽, 作為服務(wù)器, 不需要記錄在某一段時(shí)間里都瀏覽了什么文檔, 每次請(qǐng)求都是一個(gè)新的HT...

    Allen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<