会话技术及其应用

会话技术及其应用

为什么需要会话技术?

-  登录:  登录QQ空间,  保存登录状态, 
-  使用会话技术:  cookie   session
def   登录验证(request):
    # 1. 从request中获取用户名、密码;
    # 2. 调用User模型去数据库验证用户名、密码;
    # 3. 输出验证结果
        如果成功,  重定向到  成功后的页面;
        如果失败,  提示用户名或密码错误;

关于会话(session)

客户 服务器 请求响应序列 HTTP协议多次会话?Web中的会话可简单理解为:用户开一个浏览器,访问某一个Web站点,在这个站点点击多个超链接,访问服务器多个Web资源,然后关闭浏览器,整个过程称之为一个会话。会话(session)是一个客户与服务器之间的不中断的请求响应序列。对客户的每个请求,服务器能够识别出请求来自于同一个客户。当一个未知的客户向Web应用程序发送第一个请求时就开始了一个会话。当客户明确结束会话或服务器在一个预定义的时限内不从客户接受任何请求时,会话就结束了。当会话结束后,服务器就忘记了客户以及客户的请求。

客户向Web应用服务器发送的首次请求可能不是客户与服务器的第一次交互。首次请求指的是需要创建会话的请求。我们称之为首次请求是因为该请求是对多个请求计数的开始(逻辑上),也是服务器开始记住客户的请求。例如,当用户登录或向购物车中添加一件商品时,就必须开始一个会话。多次会话怎么办?答案是靠“会话追踪”

关于会话追踪

服务器靠会话追踪区别不同的用户用户 A ,购物车用户 B, 购物车

会话跟踪会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

cookie机制在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制——cookie机制。

Cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。

Cookie是不可跨域的很多网站都会使用Cookie。例如,Google会向客户端颁发Cookie,Baidu也会向客户端颁发Cookie。那浏览器访问Google会不会也携带上Baidu颁发的Cookie呢?或者Google能不能修改Baidu颁发的Cookie呢?答案是否定的。Cookie具有不可跨域名性。根据Cookie规范,浏览器访问Google只会携带Google的Cookie,而不会携带Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie。Cookie在客户端是由浏览器来管理的。浏览器能够保证Google只会操作Google的Cookie而不会操作Baidu的Cookie,从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。Google与Baidu的域名不一样,因此Google不能操作Baidu的Cookie。

Cookie是什么Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。Cookie实际上是Web服务器暂时存储在用户硬盘上的一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

猜你喜欢

转载自blog.csdn.net/owen_goodman/article/details/80957971