HTTP是一种“无状态”协议,这意味着每次客户端检索网页时,客户端都会打开与Web服务器的单独连接,并且服务器不会自动保留先前客户端请求的任何记录。
现在让我们讨论一些选项,以维护Web客户端和Web服务器之间的会话-
Web服务器可以将唯一的会话ID作为cookie分配给每个Web客户端,对于来自客户端的后续请求,可以使用接收到的cookie来识别它们。
这可能不是一种有效的方法,因为浏览器有时不支持cookie。不建议使用此过程来维护会话。
Web服务器可以发送隐藏的HTML表单字段以及唯一的会话ID,如下所示-
<input type = "hidden" name = "sessionid" value = "12345">
该条目意味着,提交表单后,指定的名称和值将自动包含在GET或POST数据中。每次Web浏览器将请求发送回时,session_id值都可用于跟踪不同的Web浏览器。
这可能是跟踪会话的有效方法,但是单击常规(<A HREF...>)超文本链接不会导致提交表单,因此隐藏的表单字段也无法支持常规会话跟踪。
您可以在每个URL的末尾附加一些额外的数据。此数据标识会话;服务器可以将该会话标识符与其已存储的有关该会话的数据相关联。
例如,对于http://(niaoge.com)/file.htm;sessionid=12345,会话标识符附加为sessionid = 12345,可以在Web服务器上访问该会话标识符以标识客户端。
URL重写是维护会话的一种更好的方法,并且在浏览器不支持cookie时适用于它们。此处的缺点是,尽管页面是一个简单的静态HTML页面,但您必须动态生成每个URL才能分配会话ID。