第11章:客户端识别与cookie机制

2021-12-08  本文已影响0人  404Not_Found

Web 服务器可能会同时与数千个不同的客户端进行对话。这些服务器通常要记录下它们在与谁交谈,而不会认为所有的请求都来自匿名的客户端。这就是客户端识别。

1.个性化接触

Http 早期是匿名、无状态的请求/响应协议。放到现在是无法想象的。
web服务器几乎没有什么信息可以用来判定是哪个用户发送的请求,也无法记录来访用户的请求序列。

需求:服务器的拥有者希望对连接另一端的用户有更多的了解,并且能够在用户浏览页面时对其进行跟踪。比如Amazon会做到以下几点需求

从以下几个方面介绍用户识别机制

2. HTTP 首部

image.png

From 首部包含了用户的email。但为了防止没有武德的服务器收集这些email地址,用来转发垃圾邮件。所以很少有服务器发送from首部。

User-Agent 首部将用户所用浏览器的信息告知服务器。

Ref 提供了用户来源的URL,这个首部不能完全标识。但它可以更好的理解用户的浏览行为,比如你从篮球网站抵达某个web 服务器。这个服务器可能推断你是个篮球迷。

3.客户端IP地址

用IP去区分每个客户端,不是不可以,前提条件是 网络拓扑图非常的简单。至少连NAT都没有,其实是非常不现实的。

4. 用户登录

用户名和密码进行认真,显示的询问用户时谁。
可以用Authorization 首部向web 站点传送用户的相关信息。
一旦登录,浏览器就可以不断的在每条发往这个站点的请求中发送这条信息。这样就总是有登录信息可用了。
也就是说在今后的请求中,要使用用户名和密码时,浏览器会用自动存储下来的值发送过去。这样,只要登录一次,就可以在整个会话期间维持用户的身份了。

缺点:
无法满足登录多个web站点。从A 跳到B,每个站点都要登录。而且每个站点可能会有重复的用户名和密码,即用户上一次网,从A 中B的连接,跳到B 的时候,可能还要输入不同的用户名和密码

5. 胖URL

有些web站点会为每个用户生成特定版本的URL来追踪用户的身份。会对真正的URL进行扩展。在URL路径开始或结束的地方增加一些状态信息。
改动后的url成为胖URL。


image.png

这个用户特有的标识码有助于服务器在用户浏览商店内容时对其进行跟踪。

可以通过胖URL将web服务器上若干个独立的HTTP事务捆绑成一个会话或访问。用户首次访问这个Web站点时,会生成唯一ID,用服务器可以识别的方式将这个ID添加到URL中去。然后服务器会将这个客户端重新导向这个胖url。

不论什么时候,只要服务器收到了对胖URL的请求,就可以去查找那个用户id相关的增量状态,然后重写所有的输出连接,使其成为胖URL,以维护用户的ID。

存在问题:

6 cookie

cookie是当前识别用户,实现持久会话的最好方式。会与前面所提到的知识共用。

6.1 cookie的类型

区别就是过期时间,如果设置了discard参数,或者没有设置expires or max-age 参数来说明扩展的过期时间,这个cookie就是一个会话cookie.

6.2 cookie 工作机制

cookie 是 服务器 贴给 用户的!

cookie 中可以包含任意信息,但他们通常都只包含一个服务器为了进行跟踪而产生的独特识别码。比如上图,服务器会给这个用户 贴上 id= “34294”的标签。服务器就可以用这个数字来 查找服务器为其访问者积累的数据信息库(购物历史,地址信息等)

但 cookie 并不仅仅局限于 id。很多服务器会将更多信息保存在cookie中。比如:


image.png

浏览器将cookie集存储在浏览器的 cookie数据库中。将来用户再次访问同一站点时,浏览器会挑中cookie,塞到一个http请求首部中传过去。

6.3 cookie罐

cookie 基本思想就是 积累一组 服务器特有的信息。每次访问服务器,都带上这些cookie。

6.4 不同站点使用不同的cookie

浏览器只会向访问的服务器发送特有的cookie.

关于广告:
广告做的像web站点的一个组成部分,而且他们会发送持久cookie给用户。当用户访问另一个由同一广告公司提供服务的站点时,(因为域是匹配的)。浏览器会携带cookie做请求。广告公司可以将此技术与reference首部(从哪个连接跳进来)结合,暗地里构建一个用户档案和浏览习惯的详尽数据集。
所以出于对用户隐私特性的保护,浏览器会限制三方cookie的使用。

切记:cookie 是服务器分发的

  1. cookie 域属性
    服务器 在 Set-Cookie 首部 添加一个 Domain属性,告诉浏览器,用户再来的时候需要带哪个cookie.


    domain

意义是,当访问 .airtravelbargains.com 中的所有站点的时候,请浏览器携带 mary17 这个cookie.
也就是是说访问,
www.airtravelbargains.com
specials.airtravelbargains.com or **.airtravelbargains.com

下列cookie首部都会被发布出去:


image.png
  1. cookie路径属性
    允许用户将cookie与部分web站点关联。通过path属性实现这一功能
    。这个属性 列出的 url路径前缀下所有 cookie都是有效的。可以理解为 cookie 对于某个域中的作用域
    比如 访问:
    http://www.airtravel/autos/
    就会独立给你生成一个 cookie,记录你喜欢的汽车尺寸。
    image.png

但是如果访问 special.html 就会只会获得下面这个cookie


image.png

如果访问的是 /autos/cheapo/index.html 就会拿到2个cookie.


image.png

所以,cookie是由服务器贴到客户端上的,由客户端维护的状态片段。

6.5 cookie 的一些属性

6.6 cookie 与 会话跟踪

可以用cookie 在用户与某个web站点进行多项事务处理时对用户进行跟踪。比如电商用会话cookie 在用户浏览时,记录用户的购物信息。当输入 amazon.com时,就启动了事务链,这些事务web服务器会通过一系列的重定向、url重写以及cookie设置来附加标识信息。


image.png

a. 用户首次请求 amazon.com
b. 服务器将请求重定向到一个电子商务软件上
c. 客户端再发一个请求
d. 服务器贴上2个会话cookie,并将用户再次重定向到另一个URL,让客户携带2个cookie再次发送请求。这个新的url是一个胖URL。如果客户端禁止了cookie,只要用户一直跟随amazon.com 也可以实现基本功能
e. 客户端请求新的url,并携带2个附加的cookie
f. 服务器重定向到 home 页面,并再次赠送2个cookie
g. 客户端再次访问新的home,并携带4个 cookie
h. 服务器回送内容

6.7 cookie与缓存

cookie 如果缓存错了,可能无效甚至泄露隐私
cookie 是存在 客户端的。切记

上一篇 下一篇

猜你喜欢

热点阅读