十一,客户端识别与cookie机制
1,Web服务器会与成千上万个不同的客户端进行对话,那么服务器是如何知道与它进行交互的客户端是谁的呢?这就是客户端识别技术。
2,为什么要识别客户端呢?
最初的HTTP是一个匿名的、无状态的请求/响应协议,每条请求/响应都是独立的,互不相干;在互联网技术日益发展的信息时代,很多web站点希望能在与用户的交流过程中(比如:使用在线购物车的时候),能够构建增量的状态,即把之前的选择都记录下来,而不必每次登录都要进行讨厌的地址信息等填写;客户端的识别就可以解决这样的问题。
3,常用的几种客户端识别技术:
方法 | 对应的HTTP首部 | 描述 | 缺点 |
Emai地址 | from | 理想情况下,每个用户都有不同的email,因此可以用它来识别不同的用户 | 恶意服务器会搜集到这些地址来发送垃圾邮件 |
浏览器 | User-agent | 用这个首部可以告知服务器用户使用的浏览器信息 | 没有提供识别特定用户的有意义信息 |
父链接 | Referer | 通过这个首部,服务器可以知道用户上一层的访问,可以了解到用户的兴趣爱好等信息 | 没有提供识别特定用户的有意义信息 |
客户端IP | Client-ip、 X-forwarded-for | 要求每个用户都有不同的IP,而且服务器可以判断出每条请求的客户端IP | (1)IP只代表机器,不代表用户,用户可以共享机器; (2)IP地址是可变的,而且很多都是动态分配的; (3)HTTP代理和网关可能会打开与原始服务器的新的TCP连接,这时,服务器看到的不是客户端的IP; |
用户名和密码 | authorization | 当客服端发送请求的时候,由服务器主动询问“你是谁?”;当登录成功后,就可以在整个会话期间维护用户的身份 | (1)需要在每个站点登录; (2)可能要为不同的站点记住不同的用户名和密码,而且不同的站点,用户名和密码的设置规则可能不一样; |
cookie | cookie | 识别当前用户,实现持久连接的最好方式 |