http 客户端识别与cookie机制

1. 用户识别机制

1.1 承载用户身份信息的HTTP首部

首部名称首部类型描述
From请求用户的E-mail地址
User-Agent请求用户的浏览器软件
Referer请求用户是从这个页面上依照链接跳转过来的
Authorization请求用户名和密码
Client-IP扩展(请求)客户端的IP地址
X-Forwarded-For扩展(请求)客户端的IP地址
Cookie扩展(请求)服务器产生的ID标签
  • 很少有浏览器会发送From首部,因为可能造成垃圾邮件的散发,一般From首部是由自动化的机器人或蜘蛛发送的
  • User-Agent首部可以将用户所用浏览器的相关信息告知服务器,包括程序的名称和版本,通常还包含操作系统的相关信息
  • Referer首部提供了用户来源页面的URL,它说明了用户之前访问过哪个页面。通过它可以更好地理解用户的浏览行为,以及用户的兴趣所在。

1.2 客户端IP地址

  • 早期人们尝试将客户端IP地址作为一种表示形式使用,但存在很多缺点,第一个是IP地址表示机器而不是用户,如果多个用户共享一台机器,那么就没办法进行区分了,第二个由于防火墙和HTTP代理的存在,IP地址是不确定的,所以IP地址不能确定目标,且IP地址容易伪造

1.3 用户登录

  • HTTP使用了一种内建机制,用WWW-Authenticate首部和Authorization首部向web站点传送用户的相关信息,这可以通过401响应代码来实现,这时候浏览器就会显示一个登录对话框,并在下一条信息的Authorization首部对服务器的请求中提供这些信息
  • 但问题是这样的话每个用户只能有一个用户名,不同用户在不同网站上可能需要不同的用户名,这大大降低了系统可用性

1.4 胖URL

  • 有些Web站点会为每个用户生成特定版本的URL来追踪用户的身份。通常会对真正的URL进行扩展,从URL路径开始或者结束的地方添加一些状态信息。用户浏览站点时,Web服务器会动态生成一些超链,继续维护URL中的动态信息
  • 改动后包含了用户状态信息的URL被称为胖URL
  • 那么这个问题很明显是没办法共享,因为会共享个人信息,且在会话间是非持久的等等

1.5 cookie

  • cookie是当前识别用户并实现持久会话的最好方式
  • 可以笼统的将cookie非为两类,会话和持久
  • 会话cookie是一种临时cookie,他记录了用户访问站点时的设置和偏好。用户退出浏览器时,cookie就被删除了
  • 持久cookie的生存时间更长一些,它们存储在硬盘上,浏览器退出,计算机重启时它们依然存在。通常会用持久cookie维护某个用户会周期性访问的站点的配置文件或登录名
  • 这两种cookie之间的唯一区别就是过期时间

1.5.1 cookie的工作原理

  • cookie就像服务器给用户贴的“嗨,我叫···”的一张贴纸一样,用户访问一个web站点时,这个web站点就可以读取哪个服务器贴在用户身上的所有贴纸
  • cookie中可以包含任意信息,但它们通常都只包含一个服务器为了跟踪而产生的独特的识别码id,但是cookie并不仅限于ID号,很多Web服务器都会将信息直接保存在cookie中,并将cookie集存储在浏览器的cookie数据库中。将来用户返回同一站点时,浏览器会i澳中那个服务器贴到用户上的那些cookie,并在一个cookie请求首部中将其传回去

1.5.2 cookie罐:客户端的状态

  • cookie的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。因为浏览器要负责存储cookie信息,所以此系统被称为客户端侧状态。这个cookie规范的正式名称为HTTP状态管理机制

1.5.3 不同站点使用不同的cookie

  • 浏览器内部的cookie罐中可以有成百上千个cookie,但浏览器不会将每个cookie都发送给所有的站点。实际上,它们通常只向每个站点发送2~3个cookie。原因如下
  1. 对所有这些cookie字节进行传输会严重降低性能。浏览器实际传输的cookie字节数要比实际的内容字节数多
  2. cookie中包含的是服务器特有的名值对,所以对大部分站点来说,大多数cookie都只是无法识别的无用数据
  3. 将所有的cookie发送给所有站点会引发潜在的隐私问题,那些你并不信任的站点也会获得你只想发给其他站点的信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clarence Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值