11.2 HTTP 首部

表 11-1 给出了七种最常见的用来承载用户相关信息的 HTTP 请求首部。这里我们先讨论前三个;后面四个首部用于更高级的识别技术,我们稍后讨论。

表11-1 承载用户相关信息的HTTP首部

首部名称 首部类型 描  述
From 请求 用户的 E-mail 地址
User-Agent 请求 用户的浏览器软件
Referer 请求 用户是从这个页面上依照链接跳转过来的
Authorization 请求 用户名和密码(稍后讨论)
Client-IP 扩展(请求) 客户端的 IP 地址(稍后讨论)
X-Forwarded-For 扩展(请求) 客户端的 IP 地址(稍后讨论)
Cookie 扩展(请求) 服务器产生的 ID 标签(稍后讨论)

From 首部包含了用户的 E-mail 地址。每个用户都有不同的 E-mail 地址,所以在理想情况下,可以将这个地址作为可行的源端来识别用户。但由于担心那些不讲道德的服务器会搜集这些 E-mail 地址,用于垃圾邮件的散发,所以很少有浏览器会发送 From 首部。实际上,From 首部是由自动化的机器人或蜘蛛发送的,这样在出现问题时,网管还有个地方可以发送愤怒的投诉邮件。

User-Agent 首部可以将用户所用浏览器的相关信息告知服务器,包括程序的名称和版本,通常还包含操作系统的相关信息。要实现定制内容与特定的浏览器及其属性间的良好互操作时,这个首部是非常有用的,但它并没有为识别特定的用户提供太多有意义的帮助。下面是两种 User-Agent 首部,一种是网景的 Navigator 发送的,另一种是微软的 Internet Explorer 发送的:

  • Navigator 6.2
  1. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4)
  2. Gecko/20011128
  3. Netscape6/6.2.1
  • Internet Explorer 6.01
  1. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

Referer 首部提供了用户来源页面的 URL。Referer 首部自身并不能完全标识用户,但它确实说明了用户之前访问过哪个页面。通过它可以更好地理解用户的浏览行为,以及用户的兴趣所在。比如,如果你是从一个篮球网站抵达某个 Web 服务器的,这个服务器可能会推断你是个篮球迷。

FromUser-AgentReferer 首部都不足以实现可靠的识别。后面的小节对识别特定用户的策略进行了更为详细的讨论。