会话跟踪的实现

HTTP是“无状态”协议:客户程序每次读取Web页面,都打开Web服务器的单独的连接,并且服务器也不自动维护客户的上下文信息。即使那些支持持续性HTTP连接的服务器,尽管多个客户请求连续发生且间隔很短时,它们会保持socket打开,但是,它们也没有提供维护上下文信息的内建支持。对于这个问题,有四种方法可以解决:cookie、session、隐藏表单区域、URL重写。

        采用这种方式时,客户程序在每个URL的尾部添加一些额外数据。这些数据标识当前的会话,服务器将这个标识符与他存储的用户相关数据关联起来。URL重写是比较不错的会话跟踪解决方案,即使浏览器不支持cookie或在用户禁用cookie的情况下,这种方案也能够工作。URL重写具有cookie所具有的的同样缺点,也就是说,服务器端程序要做简单但是冗长乏味的处理任务。即使有高层的API可以处理大部分的细节,仍须十分小心每个引用你的站点的URL,以及那些返回给用户的URL。

  • 隐藏的表单域

       HTML表单中可以含有如下的条目:<input type="hidden" name="session" value="a1234">

       这个条目的意思是:在提交表单时,要将指定的名称和值自动包括在GET或POST数据中。这个隐藏域可以用来存储有关会话的信息,但它的缺点是:仅当每个页面都是由表单提交而动态生成时,才能使用这种方法。单击常规的超文本链接并不产生表单提交,因此隐藏的表单域不能支持通常的会话跟踪,只能用于一系列特定的操作中,比较在线商店的结账过程。

原文地址:https://www.cnblogs.com/jiqianqian/p/6599412.html