由于 HTTP 是无状态的,那么如何维护 Web 浏览器和 Web 服务器之间的会话?

jspjava 8object oriented programmingprogramming

HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端都会打开与 Web 服务器的单独连接,并且服务器不会自动保留任何先前客户端请求的记录。

维护 Web 客户端和服务器之间的会话

现在让我们讨论一些维护 Web 客户端和 Web 服务器之间会话的选项 −

Cookie

Web 服务器可以为每个 Web 客户端分配一个唯一的会话 ID 作为 cookie,并且对于来自客户端的后续请求,可以使用收到的 cookie 进行识别。

这可能不是一种有效的方式,因为浏览器有时不支持 cookie。不建议使用此过程来维护会话。

隐藏表单字段

Web 服务器可以发送隐藏的 HTML 表单字段以及唯一的会话 ID,如下所示 −

<input type = "hidden" name = "sessionid" value = "12345">

此条目意味着,提交表单时,指定的名称和值将自动包含在 GETPOST 数据中。每次 Web 浏览器发回请求时,session_id 值都可用于跟踪不同的 Web 浏览器。

这是一种跟踪会话的有效方法,但点击常规 (<A HREF...>) 超文本链接不会导致表单提交,因此隐藏的表单字段也无法支持一般会话跟踪。

URL 重写

您可以在每个 URL 末尾附加一些额外数据。这些数据标识会话;服务器可以将该会话标识符与其存储的有关该会话的数据相关联。

例如,对于 http://tutorialspoint.com/file.htm;sessionid=12345,会话标识符附加为 sessionid = 12345,可在 Web 服务器上访问该标识符以识别客户端。

URL 重写是一种更好的维护会话的方法,适用于不支持 cookie 的浏览器。这里的缺点是,尽管页面是一个简单的静态 HTML 页面,但您必须动态生成每个 URL 以分配会话 ID。


相关文章