若是必须为用户保留会话,那么可以在用户的浏览器中这样做。在我们讨论如何做之前,首先来看看这种方式的利弊。把会话数据存放在用户浏览器中的一个利益是,你的系统就不必存储会话数据了。在系统中保留会话数据会有大量的存储和读取开销。不存储会话数据,系统就会减轻许多存储和工作量上的肩负。该方式的第一个利益是,该浏览器的请求可以由服务器池中的任何一台服务器处置。,会把公共数据存成的浏览器中,那么服务器池中的随便一台服务器都可以处置该浏览器的请求。
固然,任何事情都有其折中之处。该方式的一个瑕玷是必须在浏览器和需要该数据的服务器之间往返地通报数据。对每一个请求都要往返地移动数据成本很高,尤其是数据量逐渐变大的情形。注重,不要忽略上面的后半句。虽然现在的会话数据量可能不太大,但几十个程序员接见存储在 cookie中的数据,在几十次公布后,你就会想为什么页面载入这么慢呢?另一个异常严重的坏处是由 Firefox的插件 Firesheep露出出来的,即在开放的WiFi网络中会话数据很容易被捕捉到,用于恶意登录别人的账户。行使上述插件,来自任何常用的站点(如 Google、 Facebook Twitter和 Amazon等)的会话 cookie都可能受危害。我们会给出一种方式来珍爱用户的 cookie不受这种类型的黑客攻击,这种攻击通常叫作会话挟制,不外首先照样来谈谈如何在浏览器 cookie中存储会话数据。在浏览器中存储会话数据简单明了。在PHP中,如下面的示例所示,就是用 cookie名、值、过时日时间、路径、域和是否加密(是否应该只通要销毁它,只需要用同样的设置把过时时间改为time()-3600即2一过HTTPS设置它)作为参数挪用setcookie函数。在用完该cookie后,即把过时时间设置为为1小日时之前。
有些会话存储在多个 cookie中,而另一些会话数据则存储在一个cookie中。一个要思量的因素是 cookie的最大巨细。凭据RFC2965,浏览器应该支持至少4KB的 cookie,且应该能支持同一个域中的20个cookie, ni但大多数浏览器把这些作为支持的上限。凭据我们前面的看法,cookie越大,页面载人就会越慢,由于对于每个请求都要往返地通报会话数据。
(责任编辑:网络)

评论列表