资讯专栏INFORMATION COLUMN

Cookie 和 session详解

wow_worktile / 1985人阅读

摘要:协议是无状态的,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换建立新的连接,也就是说,服务器无法跟踪会话。而和就是用与解决这种问题。值得一提的是是建立在的基础上创建的。注意在的文件中,设置了的生命周期最长为分钟。

在将cookie 和 session 之前需要先理解什么是会话
会话:
用户打开一个浏览器,点击多个超链接,访问多个web资源,然后关闭浏览器,整个过程称为一个会话。
http协议是无状态的,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换建立新的连接,也就是说,服务器无法跟踪会话。而cookie 和 session 就是用与解决这种问题。
1.什么是cookie
cookie是客户端的技术,程序把每个用户数据以cookie的形式写给用户各自的浏览器,当客户端再次访问服务器的时候,会带着各自的Cookie过来,这样服务器就能处理各自用户的数据了
1.1. 如何使用cookie

Cookie cookie = new Cookie("name","value"); //创建一个cookie
cookie.setPath("/"); //cookie记得一定要设定路径,默认是当前的类的路径,设置/代表是整个web应用。
cookie.setMaxAge(""); //设置有效期限,默认是浏览器的进程,也就是浏览器关了,就没了。如果是设置为负数,那么cookie不会被存储,并且会被删除。如果设置为0,那么cookie会被删除。(这些内容在API上描述得非常清楚)
response.addCookie(cookie);//添加cookie,这样才能回写给客户端

以上的内容就是关于如何去使用一个cookie了。
1.2. cookie的细节
根据API的描述,一个cookie最大为4KB.浏览器一般只允许存放300个cookie,每个站点最多存放20个Cookie。Cookie被创建的时候默认使用Verssion 0 ,也就是http 1.0
1.2.1 cookie的删除
在cookie的API中没有删除cookie的具体方法,但是我们可以通过设置cookie的生命周期,来讲cookie删除,设置为0代表删除(详解自行查看setMaxAge()方法)

cookie.setMaxAge(0);  
如果说不想从request域中获取cookie,然后将该cookie的生命周期设置为0,可以采用以下这个方法
Cookie cookie = new Cookie("想删除的cooki名字","value");
cookie.setPath("");//此处路径必须与想删除的cookie一致
cookie.setMaxAge(0); 
response.addCookie(cookie);

1.3 cookie的获取

request.getCookies(); //返回的是cookie的数组

以上就是cookie的常用方法。

1.4 cookie设置注释

cookie.setComment("comment")

1.5 cookie 设置安全传输协议(例如 https ,ssl)

cookie.setSecure(true|false) 默认为false 

1.6 cookie 防止 xss(跨站脚本攻击) 攻击

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

当将httpOnly设置为true时,将无法通过js脚本获取cookie信息。能够有效的防止xss攻击

2.什么是session
session是服务端的技术,当浏览器第1次访问web资源的时候,服务器会自动为其创建一个session,并保存在服务器,当需要保存用户数据的时候,可以将数据写入session中。当用户访问其他程序的时候,就可以直接从session中取值。值得一提的是sesion是建立在cookie的基础上创建的。

2.1 session实现原理
session的实现原理是建立在给浏览器回写cookie,并且是以JSESSIONID为键,但是这个cookie是没有时间的,也就是说,当你关闭浏览器时,代表一个会话结束了,也就是说你的session会被删除,当你再次访问服务器的时候,服务器会为你重新创建一个session。

2.2 session的使用

2.2.1 客户端不禁用cookie的情况

HttpSession session = request.getSession();//客户端访问服务器的时候,服务器会自动创建一个session,如果客户端没有禁用cookie的话。
String sessionId = session.getId();
Cookie cookie = new Cookie("JSESSIONID",sessionId);
cookie.setPaht("/");
cookie.setMaxAge(30*60);//注意在tomcat的web.xml文件中,设置了session的生命周期最长为30分钟。
response.addCookie(cookie);
session.setAttribute("key","value");

2.2.2 客户端禁用cookie的情况

如果客户端禁用cookie,那么需要调用response的encodeURL("转发的地址")
HttpSession session = request.getSession();
String url1 = response.encodeURL("xxxx");//注意,调用这个方法之前,必须要先获取session,(在该方法的API描述得很清楚)
PrintWriter pw = response.getWriter();
pw.write(url1);

2.3 session的一些细节

设置session的生命周期

可以通过设置配置文件的形式,设置session的生命周期;在web.xml文件中添加如下代码


    30//备注这里是以分钟为单位


参考以下2篇博文:
https://my.oschina.net/kevina... 深入源码剖析了session和cookie
http://blog.csdn.net/fangaoxi... 介绍了一些基本的知识

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69841.html

相关文章

  • CookieSession详解

    摘要:例如要想在多个二级域名中共享,需要设置为顶级域名,这样就可以在所有二级域名里面或者到这个的值了。顶级域名只能获取到设置为顶级域名的,设置为其他子级域名的无法获取。 Cookie和Session详解 Cookie Cookie只存储在客服端 Cookie是什么:Cookies是web服务器存放在用户硬盘的一段文本,Cookies允许一个wen站点在用户的机器存放一些文本的信息,并可以在以...

    Little_XM 评论0 收藏0
  • 详解 Cookie Session 关系区别

    摘要:目前大多数的应用都是用实现跟踪的。的安全性一般,他人可通过分析存放在本地的并进行欺骗。在安全性第一的前提下,选择更优。考虑到减轻服务器性能方面,应当适时使用。因此,维持一个会话的核心就是客户端的唯一标识,即。 showImg(https://segmentfault.com/img/bV8riL?w=800&h=444); 在技术面试中,经常被问到说说Cookie和Session的区别...

    microelec 评论0 收藏0
  • cookiesession的使用(详解

    摘要:什么是用来存储客户端的一小段文本是一门客户端的技术因为是存储在客户端浏览器中的是为了实现客户端与服务器端之间的状态的保持技术,不安全,不要使用存储敏感信息比如登录状态和登录信息一些敏感的数据应该存储在服务器端的值从哪里来的当你访问一个网站这 什么是cookie, 用来存储客户端的一小段文本是一门客户端的技术 因为cookie是存储在客户端浏览器中的是为了实现 客户端与服务器端之间的状态...

    liujs 评论0 收藏0
  • cookiesession详解

    摘要:所谓的无连接就是服务器收到了客户端的请求之后,响应完成并收到客户端的应答之后,即断开连接。从而节省传输时间。协议对事务的处理没有记忆能力。这种方式某种方面上讲解放了服务器,但是却不利于客户端与服务器的连接。 session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我...

    SwordFly 评论0 收藏0
  • 详解 CookieSession,Token

    摘要:由于是存在客户端上的,所以浏览器加入了一些限制确保不会被恶意使用,同时不会占据太多磁盘空间。签名是对前两部分的签名,防止数据被篡改。的作用最开始的初衷是为了实现授权和身份认证作用的,可以实现无状态,分布式的应用授权。 前言 无状态的HTTP协议 很久很久之前, Web基本都是文档的浏览而已。既然是浏览, 作为服务器, 不需要记录在某一段时间里都浏览了什么文档, 每次请求都是一个新的HT...

    Allen 评论0 收藏0

发表评论

0条评论

wow_worktile

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<