cookie和会话状态的工作原理

一:存在两种类型的cookie:

1>会话cookie (session cookie)

不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,   cookie就消失了。

生命期为浏览器会话期。

一般不保存在硬盘上而是保存在内存里。

2>持久性cookie (persistent cookies)

设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。

保存在用户硬盘上面,同一浏览器可以获取。

二: session相关知识

2.1: 什么是session?

Session 是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过sessionid来区分不同的客户,session是以cookie或url重       写为基础.

2.2: session  的工作原理

client———>1.request————————->server

2. session_start();

|<————-3.reponse(SESSION_ID)<——–|

|————->4.request(SESSION_ID)———>|

5. session_start();

|<————-6.reponse(SESSION_ID)<———|

|————->7. request(SESSION_ID + logout)–>|

8. session_destroy();

|<————-9. reponse(删除cookie文件)<——-|

  1. client打开网页,向server发出请求,client上由于没有相应的cookie文件存在,在请求中不输送SESSION_ID
  2. 服务器在接受到client的请求后,通过执行session_start()函数开始进行session的处理, 首先确认请求中有没有 SESSION_ID,如果没有的话,发行一个新的SESSION_ID;如果有的话, 则调用那个存有SESSION_ID的文件,并把信息写 入$_SESSION里去,并存入以sess_开头的文件里。
  3. 把写入信息的$_SESSION参数发回给client,client在GET服务器发来的信息后,把这些信息保存在cookie里。
  4. client把cookie里的SESSION_ID一起写入header后再次向server发出请求。重复1-3的操作
  5. client发出登出请求
  6. 服务器接受请求后,通过执行session_destroy()函数开始删除session文件处理
  7. 服务器向client发出删除保存在client上的cookie文件的命令:   setcookie(session_name(), ”, time()-60, ‘/’);

2.3: 注意

  1. 通常情况下是不能跨窗口使用,但用sessionid保存在持久cookie中,然后在从新窗口中读取,就可以得到sessionid,实现跨窗口的使用.
  2. 在大浏览量的网站,session并不保险,可能会出现重复的sessionid.
  3. Session ID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的Session ID,只能通过Javascrīpt来读取。

2.4 php使用及设置

Session_start() :开始一个会话或者返回已经存在的会话。在使用Session_start()之前浏览器不能有任何输出,否则会发生以下错误。你可以在php.ini里   启动session.auto_start=1,这样就无需每次使用session之前都要调用session_start()。

如果在session.auto_start=1,会让session_save_path (‘./t/’);变的无效。因为后一条语句须放前面。

2.5 增加PHP的Session存储和处理能力

;session.save_path = “N;MODE;/path”  这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,

“MODE”表示目录的权限属性,默认为600

2.6:多服务器共享php的SESSION

1、NFS或者Samba共享的方法,让各个服务器上存放session文件的磁盘共享,这种方法简单可行。

2、集中存储到数据库中,这是比较多的实现方法,通过php提供的session_set_save_handler()函数来重定义session函数,推荐使用这种方法。

三: cookie知识

什么是 Cookie?其工作原理如何?Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。 Cookie 的基本工作原理如果用户再次访问站点上的页面,当该用户输入 URLwww.*****.com时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点。Cookie 有哪些用途?最根本的用途是:Cookie 能够帮助 Web 站点保存有关访问者的信息。更概括地说,Cookie 是一种保持Web 应用程序连续性(即执行“状态管理”)的方法.使 Web 站点记住您.

1、客户端执行程序请求 服务器发回请求结果 并且生成一个cookie给客户端 所以 第二次刷新的时候 才会有cookie的出现
2、session是保存在内存中,跟进程是同时存在的会话cookie,但是此时服务器端还保存有session文件 需要设置时间来删除session文件
3、Cookie是在本地Cookie文件中保存一些信息,Cookie文件中保存的是键值对(key-value)。Cookie文件存放于你本地计算机系统盘的Document   and   Settings/用户名   目录下。如果你访问的网站的名称为www.abc.com,那么一般来说,Cookie文件的名称为   用户名@abc.com,你可以自己打开文件夹看一看。你提到的getName获得的是保存在Cookie文件中某一个Cookie的key值。

我们知道,session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众多用户的会话数据呢?
首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来。建议唯一标识的方法有两种:cookie或者通过GET方式指定。默认配置的PHP使用session的时会建立一个名叫”PHPSESSID”的cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.ini中session.use_trans_sid等参数)。
我们查看服务器端session.save_path目录会发现很多类似sess_vv9lpgf0nmkurgvkba1vbvj915这样的文件,这个其实就是session id “vv9lpgf0nmkurgvkba1vbvj915〃对应的数据。真相就在这里,客户端将session id传递到服务器,服务器根据session id找到对应的文件,读取的时候对文件内容进行反序列化就得到session的值,保存的时候先序列化再写入。
时间: 2024-11-05 22:52:50

cookie和会话状态的工作原理的相关文章

Cookie和Session的工作原理及比较

一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料.最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么.为了做到这点,就需要使用到Cookie了.服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态. Cookie(复数形态:Cookies),是指某些网站为了辨别用户身份.进行sessio

SSO 基于Cookie+fliter实现单点登录(SSO):工作原理

SSO的概念: 单点登录SSO(Single Sign-On)是身份管理中的一部分.SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证. SSO的用途: 目前的企业应用环境中,往往有很多的应用系统,淘宝.天猫.爱淘宝等等产品和如办公自动化(OA)系统,财务管理系统,档案管理系统,信息查询系统等等.这些应用系统服务于企业的信息化建设,为企业带来了很好的效益.但是,

cookie、Session工作原理

一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择.二.会话cookie和持久cookie的区别 如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了.这种生命期为浏览

Cookie和Session的作用和工作原理

本文链接:https://blog.csdn.net/guoweimelon/article/details/50886092 一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料.最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么.为了做到这点,就需要使用到Cookie了.服务器可以设置或读取Cookies中包含信

Java web每天学之Servlet工作原理详情解析

上篇文章中我们介绍了Servlet的实现方式以及Servlet的生命周期,我们这篇文章就来介绍一下常用对象. 点击回顾:<Java Web每天学之Servlet的工作原理解析>:<Java Web每天学之Servlet的工作原理解析(二)> 一.HttpServletRequest对象 1.介绍HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是HttpSe

How Javascript works (Javascript工作原理) (十二) 网络层探秘及如何提高其性能和安全性

个人总结:阅读完这篇文章需要20分钟,这篇文章主要讲解了现代浏览器在网络层传输所用到的一些技术. 这是 JavaScript 工作原理的第十二章. 正如在之前关于渲染引擎的文章中所讲的那样,我们相信好的和伟大的 JavaScript 开发者之间的差别在于后者不仅仅只是理解了语言的具体细节还了解其内部构造和运行环境. 网络简史 49 年前,ARPAnet 诞生了.它是早期的报文分组交换网络及第一个实现 TCP/IP 协议套件的网络.该网络连通了加利福亚大堂和斯坦福研究所.20 年后,Tim Ber

???Struts2框架03 session的使用、登录逻辑【session工作原理】

1 登录逻辑 1.1 获取登录数据(例如:用户民.密码) 1.2 在控制层调用业务层来验证数据信息 1.3 登录成功:保存用户信息(服务器用session.浏览器用cookie),跳转到主页满 1.4 登录失败:留在登录页面,并给出错误提示信息 2 什么是session 就是一个会话对象,有服务器创建,目的是为了共享数据(注意:每一个浏览器对应一个session对象) 3 session的工作原理 待更新... 2017年7月3日21:53:09 4 在struts2中获取session对象的方

Servlet 生命周期、工作原理

一. Servlet 生命周期 servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init(). service():它是Servlet的核心,负责响应客户的请求.每当一个客户请求一个HttpServlet

[转载]浏览器的工作原理:新式网络浏览器幕后揭秘

原文地址 序言 这是一篇全面介绍 WebKit 和 Gecko 内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果.在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据(请参见资源),并花了很多时间来研读网络浏览器的源代码.她写道: 在 IE 占据 90% 市场份额的年代,我们除了把浏览器当成一个"黑箱",什么也做不了.但是现在,开放源代码的浏览器拥有了过半的市场份额,因此,是时候来揭开神秘的面纱,一探网络浏览器的内幕了.呃,里面只有数以百万行计的 C++ 代码.