客户端识别与cookie技术

常见的用来承载用户相关信息的HTTP首部

From: 用户的E-mail地址
User-Agent: 用户的浏览器软件
Refer: 用户是从这个页面上依照连接跳转过来的
Authorization: 用户名和密码
Client-IP(扩展请求):客户端的ip地址
X-Forwarded-For(扩展请求): 客户端的IP地址
Cookie(扩展请求): 服务器产生的ID标签

使用客户端IP地址识别用户存在的缺点

  • 客户端IP地址描述的是机器,而不是用户,多个用用户共享一台电脑,就无法区分了。
  • 很多因特网服务提供商都会在用户登录时为其动态分配IP地址。用户每次登录,都会得到一个不
    同地址。
  • 为提供安全性,并对稀缺的地址资源进行管理,很多用户都是通过网络地址转换防火墙来浏览网
    络内容。
  • HTTP代理和网关通常会打开一些新的、到原始服务器的TCP连接,Web服务器看到的将是代理服务
    器的IP地址而不是客户端的,有的代理会添加特殊的Client-IP或X-Forward-For扩展首部来保存原始
    的IP地址,但并不是所有的代理都支持这种行为。

胖URL的缺点

  • URL比较丑陋
  • 无法共享URL,胖URL中包含了与特定用户和会话有关的状态信息,如果将这个URL发送给其他人
    可能会在无意之间中将你的个人信息共享出去
  • 破坏缓存 为每个URL生成特有的版本就意味着不在有可供访问的URL需要缓存了
  • 额外的服务器负荷 服务器需要重写HTML页面使URL变胖
  • 逃逸口 用户转到其他站点或者请求一个特定的URL时,就很容易在无意中”逃离胖URL会话”
  • 在会话间是非持久的 除非用户收藏了特定的胖URL,否则用户退出登录时,所有的信息都会丢失

cookie

可以笼统的将cookie分为两类: 会话cookie和持久cookie。会话cookie是一种临时cookie,它记
录了用户访问站点时的设置和偏好。用户退出浏览器时,会话cookie就被删除了。持久cookie的生存
时间更长一些;它们存储在硬盘上,浏览器退出,计算机重启它们仍然存在。会话cookie和持久cookie
之间唯一的区别就是它们的过期时间。如果设置了Discard参数,或者没有设置Expires或Max-Age参数
来说明扩展的过期时间,这个cookie就是一个会话cookie。

cookie是如何工作的

用户首次访问Web站点时,Web服务器对用户一无所知。Web服务器希望这个用户会再次回来,所以在
响应报文中添加Set-Cookie首部。cookie中可以包含任何信息,但它们通常都只包含一个服务器为了
进行追踪而产生的独特的标识码。浏览器会记住从服务器返回的Set-Cookie或Set-Cookie2首部中的
cookie内容存储在浏览器的cookie数据库中。将来用户返回同一站点时,浏览器会挑中那个服务器
贴到用户上的那些cookie,并在一个cookie请求首部中将其传回去。

cookie罐:客户端的状态

cookie的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供
给他,因为浏览器要负责存储cookie信息,所以此系统被称为客户端侧状态,cookie内容的字段们:

  • domain(域)cookie的域,控制哪些站点可以看到那个cookie
  • allh 是域中所有的主机都获取cookie,还是只有指定了名字的主机获取。
  • path(路径)域中与cookie相关的路径前缀。这个属性列出的URL路径前缀下所有cookie都是有
    效的
  • secure(安全)是否只有在使用SSL连接时才发送这个cookie
  • expiration cookie的过期秒数
  • name cookie变量的名字
  • value cookie变量的值