这是网络系列的第八篇文章,接下来会有更多精彩内容.敬请期待! 让咱们一块儿乘风破浪!浏览器
HTTP做为一个无状态的请求响应协议,几乎没有什么信息用来判断是哪一个客户端,也没法记录用户的访问记录。随着业务增加,如今的服务器但愿能记录客户端的信息,以便提供个性化服务(收集用户数据)。今天一块儿来了解下经常使用的客户端识别方式:缓存
HTTP首部识别,是根据请求首部的相关信息来获取客户端信息。下面是经常使用的首部:bash
首部名称 | 类型 | 描述 |
---|---|---|
From | 请求 | 用户E-mail地址 |
User-Agent | 请求 | 用户浏览器软件 |
Referer | 请求 | 用户是从这个连接跳转过来的 |
Authorization | 请求 | 用户名和密码 |
Client-IP | 扩展请求 | 客户端IP地址 |
X-Forwarded-For | 扩展请求 | 客户端IP地址(详情看这里) |
Cookie | 扩展请求 | 服务器产生的ID标签 |
From
首部记录了每一个用户的E-mail地址,理想状况下,这个地址能够做为识别用户的标志。但为了防止服务器收集该信息用于垃圾邮件的散发,不多浏览器会发送From首部。User-Agent
首部是用户浏览器的相关信息,能够用来制定和特定浏览器的交互动做,但它并不能用来识别特定的用户信息。Referer
首部提供了用户来源页面的URL。只是标识了用户以前访问了哪一个页面。IP地址
做为用户标识具备必定的前提条件:每一个用户有着不一样的IP,不多发生变化。但一般状况下,IP地址描述的是一台机器,而不是一个用户;IP地址也会在用户登陆服务商时动态获取;服务器可能看到的是HTTP代理的IP地址(这种状况下Client-IP和X-Forwarded-For首部保存了原始IP地址)。服务器
用户登陆
,在用户访问须要受权才能访问的网站时,服务器会要求其登陆。用户在输入用户名和密码后,浏览器能够经过WWW-Authentication
首部将相关信息加密后发给服务器,这样服务器就能够标识当前用户。固然,该方式带来一个麻烦就是,用户在访问不一样的网站时,须要屡次输入不一样的用户名和密码。cookie
有些服务器会为每一个用户生成特定版本的URL,来识别不一样的用户身份。一般,会对真正的URL进行扩展,在URL中添加状态信息;这些包含了用户信息的URL就称为胖URL。但该种方式也存在一些问题:网络
和上面几种识别用户的方式相比,Cookie是最好的方式。dom
过时时间
。name = value
的键值列表,服务器对一无所知的用户的HTTP响应中,使用Set-Cookie
或Set-Cookie2
首部设置。浏览器会记住首部的内容,未来在用户返回同一站点时,会将对应的Cookie传给服务器。客户端侧状态
,规范的名称为HTTP状态管理机制
。固然,不一样的浏览器会以不一样的方式进行存储,但它们存储的内容大体相同:
Cookie: name1=value1[; name2=value2][; name3=value3]...
复制代码
响应头中的大体格式为:Set-Cookie: name=value[; name2=value2][; name3=value3]...
复制代码
上面格式中提到的name包含如下选项:强制:NAME
可选:Expires、Domain、Path、Secure
复制代码
Set-Cookie2: name=value[; name2=value2][; name3=value3]...
复制代码
上面格式中提到的name包含如下选项:强制:
NAME,不能以$开头
Version,cookie的版本。如`Set-Cookie2: Version="1"`
可选:
Comment,说明服务器准备如何使用该Cookie。用户能够经过检查此策略来肯定是否容许使用带有该Cookie的会话。必须采用utf-8编码。
CommentURL,详细描述Cookie策略及目的的文档地址。
Discard,若提供该属性,表示客户端在退出时放弃该Cookie。
Domain,使用该Cookie的域名标识。
Max-Age,生存周期,单位秒。客户端根据使用期计算规则进行计算。计算的值大于该值时,该Cookie应该丢弃。
Path,可使用该Cookie的路径。
Port,说明可使用Cookie的端口号,如:`Set-Cookie2:name="xx"; Port="80,81,82"`。若只有Port没有值,说明只能向当前服务器端口提供Cookie。
Secure,是否只有在使用ssl链接时才发送该Cookie。
复制代码
请求头中的大体格式以下:Cookie: name1=value1[; name2=value2][; name3=value3]...
复制代码
在回传匹配Cookie时,须要将其过滤器一同传输,并且保留的关键字须要以$开头。今天主要了解了服务器识别客户端的相关手段. 但愿你们也能有所收获.网站
咱们在享受技术带来的便利的同时,本身的隐私也在丢失。技术本是无罪的,只是某些人的心坏了。你是否也被上面的技术跟踪了....编码