session的工作原理

session实现 流程:当客户端访问服务器时,服务器根据需求设置seesion,将会话信息保存在服务器上,同时将标示session的session_id传递给客户端浏览器,浏览器将这个session_id保存在内存中(还有其他的存储方式,例如写在url中),我们称之为无过期时间的cookie。浏览器关闭后,这个cookie就清理掉了,它不会存在用户的cookie临时文件。以后浏览器每次请求都会额外加上这个参数值,服务器再根据这个session_id,就能获得客户端的数据状态。浏览器每次请求都会带上由服务器为它生成的session_id。如果客户端浏览器意外关闭,服务器保存的session数据不是立即释放的,此时数据还会存在,,只要我们知道那个session_id,就可以继续通过请求获得此session的信息;但是这个时候后台的session还存在,但是session的保存有一个过期时间,一旦超过规定时间没有客户端请求,他就会清楚这个session。


工作原理:

       1、创建session

              当用户访问到一个服务器时,如果服务器启用Session,服务器就要为该用户创建一个Session,在创建这个Session的时候,服务器首先检查这个用户发来的请求里是否包含了一个Session_id,如果包含了一个Session_id,则说明了之前该用户已经登录过兵为此用户创建过session,那服务器就按照这个session id把这个session在服务器的内存里找出来(如果找不到,就有可能为它新创建一个),如果客户端请求里不包含有session_id,则为该客户端创建一个session并生成一个与此session相关的session id。这个session id将在本次响应中返回到客户端保存,而保存这个session id的正是cookie。

      2、使用session

          (1)保存在cookie里

        (2)URL重写,将session id直接附加在URL路径的后面

        (3)作为查询字符串附加在URL后面。


cookie和Session的区别

      1、存放位置不同

           Cookie保存在客户端,Session保存在服务器端

     2、安全性的不同

          Cookie存储在浏览器中,对客户端是可见的。Session存储在服务器端,对客户端是透明的。

    3、存取方式不同

          Cookie中只能保管ASCII字符串,而Session能够存取任何类型的数据。

  4、有效期的不同

        只需要设置Cookie的过期时间属性为一个很大很大的数字,Cookie就可以在浏览器保存很长很长时间。由于Session依赖于名为Session id的Cookie,而cookie Session id的过期时间默许为-1,只需关闭了浏览器,该Session就会失效。

   5、跨域支持上的不同

        Cookie支持跨域名访问,例如将domain属性设置为“.baidu.com”,则以".baidu.com"为后缀的一切域名均能访问该Cookie。跨域名Cookie如今普遍用在网络中。而Serssion则不会支持跨域名访问。Session仅在他所在的域名内有效。

        

你可能感兴趣的:(session的工作原理)