HTTP 是一种无状态协议,那么如何在 Web 浏览器和 Web 服务器之间维护会话呢?


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

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

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

Cookie

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

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

隐藏表单字段

Web 服务器可以发送一个隐藏的 HTML 表单字段,并附带一个唯一的会话 ID,如下所示:

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

此条目表示,当提交表单时,指定的名称和值会自动包含在 **GET** 或 **POST** 数据中。每次 Web 浏览器发送请求时,都可以使用 **session_id** 值来跟踪不同的 Web 浏览器。

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

URL 重写

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

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

URL 重写是维护会话的一种更好方法,并且在浏览器不支持 Cookie 时也可以使用。这里的缺点是,您必须动态生成每个 URL 以分配会话 ID,即使页面是一个简单的静态 HTML 页面。

更新于:2019-07-30

4K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.