文章教程

8.1.1问题的提出

9/17/2020 9:38:49 PM 人评论 次浏览

8.1 什么是会话处理

本节介绍会话处理问题的提出、涉及的常用技术和会话处理的基本概念。

8.1.1 问题的提出

在第1章中已经介绍过超文本传输协议(HTTP),它定义了通过互联网传输数据的规则。HTTP 是一种无状态的协议,也就是每次请求都是独立的,和之前或之后的请求无关。这就意味着如果后续处理需要前面的信息,则必须重传数据,这样可能导致每次连接传送的数据量增大。

例如,在网上商城系统中,有一些页面(如发表评价页面、购买商品页面)需要用户登录后才能浏览。但在打开这些页面时系统并不知道访问者之前是否登录过,于是就可能出现要求用户重复登录的情况。具体过程如图8-1所示。

figure_0132_0175

图8-1 由于HTTP无状态而造成的问题

8.1.2 解决方案

对8.1.1小节所提到的问题的常用解决方案有下面两个。

1.Cookie

Cookie有时也用其复数形式Cookies,指存储在用户本地上的少量数据,最经典的Cookie应用就是记录登录用户名和密码,这样下次访问时就不需要输入自己的用户名和密码了。

也有一些高级的Cookie应用,如在网上商城查阅商品时,该商城应用程序就可以记录用户兴趣和浏览记录的 Cookies。在下次访问时,网站根据情况对显示的内容进行调整,将用户所感兴趣的内容放在前列。

Cookie存在如下缺陷。

• Cookie的数据大小是有限制的,大多数浏览器只支持最大为4096字节的Cookie,有时不能满足需求。

• 客户端可以禁用或清空Cookie,从而影响程序的功能。

• 当多人共用一台计算机时使用Cookie可能会泄露用户隐私,带来安全问题。

2.Session

Session(会话)可以保持网站服务器和网站访问者的交流,访问者可以将数据保存在网站服务器中。为了区分不同的访问者,网站服务器为每个网站访问者都分配一个会话编号 SID,一个访问者在Session中保存的所有数据都与他的SID相关联。在访问者打开的所有页面中,都可以通过SID设置和获取Session数据,因此通过Session可以实现多个页面间的数据共享。用户在任意一个页面登录后,都可以将登录标记和登录用户名保存在 Session 变量中。这样在其他页面中就可以获知用户已经登录了,从而避免重复登录。

使用Cookie和Session技术的解决方案如图8-2所示。

figure_0133_0176

图8-2 使用Cookie和Session技术的解决方案

教程类别