精华内容
下载资源
问答
  • 什么是Session

    2018-06-25 23:16:43
    1.Session 我们常说的会话,那什么叫会话呢,请看一个场景: 从我登录一个博客的那一刻开始,到我退出博客(关闭应用或退出账号),这整个过程叫一次会话。其中包括的元素有,客户端、服务器还有访问的这一段时间...

    1.
    Session 是我们常说的会话,那什么叫会话呢,请看一个场景:
        从我登录一个博客的那一刻开始,到我退出博客(关闭应用或退出账号),这整个过程叫一次会话。其中包括的元素有,客户端、服务器还有访问的这一段时间组成了整个会话。A客户端与C服务器建立连接时所处的会话 和B窗户端与C服务器建立连接时所处的会话肯定是两个不同的会话。
    2.
    为什么要定义这么一个东西。这明显是划定一个范围,而划定一个范围的目的就是在这范围里面共享东西!一个登录账户,如果我们在首次登录的时候把它们设置到这个Session 的全局变量中去,那么往后的操作都不用每次都登录一下账户(每次传一下账号和密码)。
    3.
    我们都知道HTTP 是无状态的,而这个Session 就能解决无状态所带来的问题。但是以前我们有提过,解决HTTP 无状态的方法有Cookie  ,那么Session 与Cookie 有什么区别呢。主要区别在一个地方,那就是存储的地方不一样。Cookie 存在客户端浏览器上(也就是你本地电脑里,因为浏览器就装在你本地上),而Session存在Web 服务器上。就安全性来说,肯定是在自己服务器上的安全性更好,并且可以限制存放时间。不好的是,一万个浏览器登录的Session都只存在你一个服务器上跟一万个浏览器分别存在自己的客户端上,压力不是一般的大。
    4.
    所以,一般重要的信息放Session中,其他信息放Cookie中。但灵活的程序员都会将两者配合起来使用。
    展开全文
  • 什么是session

    千次阅读 2016-08-29 17:58:24
    1.session,中文经常翻译为会话,其本来的含义指有始有终的一系列动作/消息。 2.当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的在通信双方在...
    1.session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息。
    2.当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道
    3.session在web开发语境下的语义又有了新的扩展,它的含义是指一类用来在客户端与服务器之间保持状态的解决方案
    4.有时候session也用来指这种解决方案的存储结构,如“把xxx保存在session里

    5.由于各种用于web开发的语言在一定程度上都提供了对这种解决方案的支持,所以在某种特定语言的语境下,session也被用来指代该语言的解决方案,比如经常把Java里提供的javax.servlet.http.HttpSession简称为session

    当用户登录后,需要把用户信息保存到session中,便于确保用户操作权限,在其它页面通过检查session是否为null可以知道用户是否登录。
    当用户登录时,如何把用户信息保存到session中?
    然后 在需要的地方 ,比如 获取用户信息地方再从session中拿出来

    如何从session中拿出用户信息?


    服务端设置session

    web端验证session

    片段:

    session.invalidate();
    
    session = request.getSession(true);
    
     req.getSession().setAttribute("userid",data.get("userid"));
     data.remove("userid");
     req.getSession().setAttribute("userinfo",data);




    文章来源:http://www.cnblogs.com/yuzhongwusan/archive/2011/12/19/2293347.html
    展开全文
  • 什么是session?什么是cookie?session和cookie有什么区别?】 每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析前端知识/...

    这里是修真院前端小课堂,本篇分析的主题是

    【什么是session?什么是cookie?session和cookie有什么区别?】

    每篇分享文从

    【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

    八个方面深度解析前端知识/技能,本篇分享的是:

    【什么是session?什么是cookie?session和cookie有什么区别?】

     

    什么是SESSION?什么是COOKIE?SESSION和COOKIE有什么区别? 什么场景适用于SESSION?什么场景适用于COOKIE?

     

    1.背景介绍

    通过例子简单引入

    星巴克开始优惠活动,每消费10杯咖啡,会免费赠送1杯。考虑到一个人一次性消费10杯咖啡几乎不可能,所以需要采取某种方式来记录顾客的消费数量。

    解决方案

    1)店员很厉害,每个顾客的消费记录都记得一清二楚;

    2)分给顾客一张卡片,每消费一次记录一次;

    3)发给顾客一张卡片,上面有卡号,顾客每消费一次,由店员在操作机上记录一次。

    分析:方案一的可执行性几乎为0。方案二和方案三我们都见过。 而方案二和三正是对应的客户端记录和服务端记录。与之相对应的正是cookie和session。 好了,我们进入正题。

     

    由于HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就诞生了Cookie

    Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie

    客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,

    以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

    实际就是颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理

    cookie 可以让服务端程序跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些Cookie,如果 Cookie 很多,这无形地增加了客户端与服务端的数据传输量,

    而 Session 的出现正是为了解决这个问题。同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次访问服务器的时候生成的, 而且每个客户端是唯一的。这样每个客户端就有了一个唯一的 ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 NANE 为JSESIONID 的一个 Cookie。

     

    2.知识剖析

    cookie机制

     

     

     

     

     

    cookie的内容主要包括name(名字)、value(值)、maxAge(失效时间)、path(路径),domain(域)和secure

    name:cookie的名字,一旦创建,名称不可更改。

    value:cookie的值,如果值为Unicode字符,需要为字符编码。如果为二进制数据,则需要使用BASE64编码.

    maxAge:cookie失效时间,单位秒。如果为正数,则该cookie在maxAge后失效。如果为负数,该cookie为临时cookie,关闭浏览器即失效, 浏览器也不会以任何形式保存该cookie。如果为0,表示删除该cookie。默认为-1

    path:该cookie的使用路径。如果设置为"/sessionWeb/",则只有ContextPath为“/sessionWeb/”的程序可以访问该cookie。如果设置为“/”,则本域名下ContextPath都可以访问该cookie。

    domain:域.可以访问该Cookie的域名。第一个字符必须为".",如果设置为".google.com",则所有以"google.com结尾的域名都可以访问该cookie",如果不设置,则为所有域名

    secure:该cookie是否仅被使用安全协议传输。

    Session机制

    Session机制是一种服务端的机制,服务器使用一种类似散列表的结构来保存信息。

    当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端里的请求里是否已包含了一个session标识--sessionID,

    如果已经包含一个sessionID,则说明以前已经为此客户端创建过session,服务器就按照sessionID把这个session检索出来使用

    如果客户端请求不包含sessionID,则为此客户端创建一个session并且声称一个与此session相关联的sessionID,

    sessionID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串(服务器会自动创建),这个sessionID将被在本次响应中返回给客户端保存。

     

    3.常见问题

     

    使用cookie的弊端

    使用session的弊端

    cookie和session的区别

     

    4.解决方案

    使用cookie的缺点

    如果浏览器使用的是cookie,那么所有的数据都保存在浏览器端,

    cookie可以被用户禁止

    cookie不安全(对于敏感数据,需要加密)

    cookie只能保存少量的数据(大约是4k),cookie的数量也有限制(大约是几百个),不同浏览器设置不一样,反正都不多

    cookie只能保存字符串

    对服务器压力小

    使用session的缺点

    一般是寄生在Cookie下的,当Cookie被禁止,Session也被禁止

    当然可以通过url重写来摆脱cookie

    当用户访问量很大时,对服务器压力大

    我们现在知道session是将用户信息储存在服务器上面,如果访问服务器的用户越来越多,那么服务器上面的session也越来越多, session会对服务器造成压力,影响服务器的负载.如果Session内容过于复杂,当大量客户访问服务器时还可能会导致内存溢出。

    用户信息丢失, 或者说用户访问的不是这台服务器的情况下,就会出现数据库丢失.

    cookie和session的区别

    具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到, 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的

    cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

    session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

    单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。

    可以将登陆信息等重要信息存放为session。

     

    5.扩展思考

    一般的验证方式

    1.生成3个COOKIE,分别使用用户名,登录时间,用户名+登录时间DES加密后的密文

    2.使用COOKIE与SESSION进行比对验证

    3.使用JWT生成TOKEN,解密出被加密的部分进行验证。

    JSON Web Token(JWT)是一个开放的标准(RFC7519),它定义了一个紧凑且自包含的方式,用于在各方之间以JSON对象安全地传输信息。

    一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。

    JWT的头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。

    "typ":"JWT",

    "alg":"HS256"

    当然头部要进行BASE64编码

    签名(Signature)

    将上面的两个编码后的字符串都用句号.连接在一起(头部在前)例如头部使用base64编码后为123.456

    我们将上面拼接完的字符串用HS256算法进行加密。在加密的时候,还需要我们自己提供一个密钥(secret)。 得到789.

    将他们完全拼在一起,我们就得到了完整的JWT"123.456.789" 在我们的请求URL中会带上这串JWT字符串

    载荷

    iss: 该JWT的签发者, 是否使用是可选的;

    sub: 该JWT所面向的用户,是否使用是可选的;

    aud: 接收该JWT的一方, 是否使用是可选的;

    exp(expires): 什么时候过期,这里是一个Unix时间戳,是否使用是可选的;

    iat(issued at): 在什么时候签发的(UNIX时间),是否使用是可选的;

    nbf (Not Before):如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟;,是否使用是可选的;

    JWT的Token认证

     

     

     

     

     

     

     

     

     

     

     

    对Token认证的五点认识

    对Token认证机制有5点直接注意的地方:

    一个Token就是一些信息的集合;

    在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;

    服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;

    基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;

    因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;

     

    Token机制相对于Cookie机制又有什么好处呢?

    支持跨域访问:Cookie是不允许垮域访问,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输.

    无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token 自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息.

    更适用CDN: 可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTML,图片等),而你的服务端只要提供API即可.

     

    去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成调用即可.

    更适用于移动应用: 当你的客户端是一个原生平台(iOS, Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单得多。

    CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。

    性能: 一次网络往返时间(通过数据库查询session信息)总比做一次HMACSHA256计算 的Token验证和解析要费时得多.

     

    不需要为登录页面做特殊处理:如果你使用Protractor 做功能测试的时候,不再需要为登录页面做特殊处理.

    基于标准化:你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google,Microsoft).

     

    6.参考文献

    百度

    http://blog.csdn.net/fangaoxin/article/details/6952954/

    http://www.cnblogs.com/xiekeli/p/5607107.html

    由于HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份,为了解决这个问题,就诞生了Cookie

    Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie

    客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,

    以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

    实际就是颁发一个通行证,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理

     

    cookie可以让服务端程序跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些 Cookie,如果 Cookie 很多,这无形地增加了客户端与服务端的数据传输量,

    而 Session 的出现正是为了解决这个问题。同一个客户端每次和服务端交互时,不需要每次都传回所有的 Cookie 值,而是只要传回一个 ID,这个 ID 是客户端第一次访问服务器的时候生成的, 而且每个客户端是唯一的。这样每个客户端就有了一个唯一的 ID,客户端只要传回这个 ID 就行了,这个 ID 通常是 NANE 为JSESIONID 的一个 Cookie。

     

    展开全文
  • 什么是session?session和cookie有什么区别?cookie(存客户端、不安全、存放数据量有限)session(存服务器、占内存、)不同点 什么是cookie?什么是session?session和cookie有什么区别? 部分来源:...

    什么是cookie?什么是session?session和cookie有什么区别?

    部分来源:https://www.nowcoder.com/questionTerminal/5a2d287965824d3ca93921bf89f8654c

    cookie和session都是回话跟踪技术。

    cookie(存客户端、不安全、存放数据量有限)

    cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。
    (cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie。客户端浏览器会把cookie保存起来。当浏览器再次请求该网站时,浏览器就会把请求地址和cookie一同给服务器。服务器检查该cookie,从而判断用户的状态。服务器还可以根据需要修改cookie的内容。)

    cookie有两种

    • 一种是基于窗口的,浏览器窗口关闭后,cookie就没有了;
    • 另一种是将信息存储在一个临时文件中,并设置存在的时间。

    在使用cookie时要注意几点:首先不要在cookie中存放敏感信息;(不安全)
    其次cookie存储的数据量有限(4k),不能将过多的内容存储cookie中;
    再者浏览器通常只允许一个站点最多存放20个cookie。

    session(存服务器、占内存、)

    session是另一种记录客户状态的机制。不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该session中查找该客户的状态就可以了。

    (当用户通过浏览器和服务器建立一次会话后,sessionID就会随响应信息返回存储在基于窗口的cookie中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个sessionID又会提交给服务器让服务器识别用户身份。)

    session话中可以为用户保存信息。当然,和用户会话相关的其他信息(除了会话ID)也可以存在cookie方便进行会话跟踪。

    不同点

    session对象是在服务器内存中的,而基于窗口的cookie是在客户端内存中的。
    cookie不是很安全,别人可以分析存放在本地的cookie,进行cookie欺骗;session会在一定时间内保存在服务器上,当访问增多,会占用服务器性能
    cookie保存数据不能超过4k,很多浏览器都限制一个站点最多存放20个cookie

    展开全文
  • 什么是Session,Session常用API

    千次阅读 2018-11-18 17:19:30
    什么是Session:Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session. ...
  • 什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?】 【修真院JAVA小课堂】 什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于...
  • 什么是Session 如何使用Session

    千次阅读 2017-02-20 12:17:18
    什么是Session 使用Cookie和附加URL参数都可以将上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。 Session技术是一种将会话状态保存...
  • 什么是cookie?什么是session

    千次阅读 2018-08-28 18:30:53
    什么是session? 一、背景介绍   HTTP是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题。不然有些情况下即使是同一个网站每打开一个页面也都要登录一下。而Session和Cookie就是为解决这...
  • 什么是session: 1.session 是一种服务端机制,类似散列表结构来存储用户数据。 2.浏览器第一次向服务器发送请求的时候,服务器会自动生成一个session和sessionID 3.sessionID唯一标识这个session 4.服务器通过...
  • 什么是session,,@(Session["UserID"])是什么意思,,为什么就直接得到id了,,,,session的用法 public ActionResult Manage() { try { if (Session["UserID"].ToString() != null) return View(); else ...
  • 什么是session

    千次阅读 2019-03-11 09:43:23
    Session是什么 Session一般译作会话,牛津词典对其的解释进行某活动连续的一段时间。从不同的层面看待session,它有着类似但不全然相同的含义。比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,...
  • 什么是session?

    2019-04-21 19:20:34
    session一个域对象之一,它的范围在一个会话范围之类有效,session既然域对象,那么当然就要有getAttribute()和setAttribute()系列的方法了。 在一个会话内共享一个session对象,所以session中可以保存一...
  • 什么是session跨域

    2020-04-04 19:02:13
    客户端请求的时候,请求的服务器,不是同一个IP,端口,域名,主机名的时候,都称为跨域
  • 1、什么是Session  Session 的中文译名叫做“会话”,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个 session。目前社会上对 session 的理解...
  • 什么是Session?Session什么时候产生?    Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储...
  • 什么是session串的问题

    千次阅读 2008-11-13 08:57:00
    什么是session串的问题 典型案例:现有一Web系统,用用户A登录,打开修改页面Page1,然后通过菜单文件-》新窗口打开一个窗口,用用户B登录,然后回Page1页面提交,此时身份已经变为用户B,出现非希望的结果。...
  • 什么是cookie,什么是session,cookie和session的区别

    千次阅读 多人点赞 2018-05-30 10:17:41
    1.什么是session 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户...
  • Session,作为我们离不开的后台的技术,它的出现主要为了解决 Http 协议的无状态特点,用于解决用户状态的存储问题,而往往对于存储来说都会涉及到一个时间问题,下面我们来看看它的销毁方式到底有哪些。...
  • 什么是SESSION?(二)

    千次阅读 2016-12-15 13:31:32
    本篇图文讨论了SESSION多服务器共享问题以及SESSION操作的效率问题。本篇微信图文由钟锦提供。
  • 什么是SESSION?(三)

    千次阅读 2016-12-16 12:02:54
    本微信图文通过一个利用数据库的方式存储Session的例子,深入介绍了对Session机制的理解。本微信图文由钟锦提供。
  • 什么是SESSION?(一)

    千次阅读 2016-12-08 17:26:21
    本图文通过三个问题的回答,详细介绍了Session的机制。本图文由钟锦提供。
  • 到底什么是session

    2013-05-26 01:44:49
    valueUnBound(HttpSessionBindingEvent event): It notifies the object that is being unbound from a session and is responsible for identifying the session. package roseindia; import javax.servlet....
  • 指在一个浏览器对应多个Web服务时,服务端的Session数据需要共享。例如单点登录、Web服务器集群等场景都需要用到、多子服务。 Session共享有多种解决方案,例如Tomcat插件,我最喜欢的用Spring+Redis+Session...
  • hibernate把几乎所有的东西都看成对象,你建表的时候id虽然用的int但在配置文件中生成默认的就是Integer类型,再比如bigint就是Long,可见他的对象概念很强的。你看下load方法的声明,把鼠标放到load上应该有该...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,995
精华内容 7,598
关键字:

什么是session