前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【HTTP】客户端识别和cookie机制

【HTTP】客户端识别和cookie机制

作者头像
袁新栋-jeff.yuan
发布2020-08-26 15:24:18
1.8K0
发布2020-08-26 15:24:18
举报

为什么要有客户端识别和cookie机制呢?

  1. 由于现在的web客户端希望对不同的用户做一些个性化的接触。
  • 个性化的问候:不同用户进入页面的时候可以提示对应的信息,如生日问候等
  • 有放放矢的推荐:根据用户的兴趣爱好进行推荐对应的商品信息
  • 管理信息的存档:在进行网购的时候用户不喜欢一直去填写一些地址,支付信用卡等信息,可以根据不同的用户去存储用户对应的信息
  • 记录回话 http是无状态的,每一条请求都是独立的请求/响应,但是有需求是用户在与站点交互的时候可以构建增来那个状态,要实现这一功能就得有一种功能可以区分不同的HTTP事务。

实现客户识别的几种方式

1. HTTP首部
  • HTTP首部有几个参数:
在这里插入图片描述
在这里插入图片描述

但是这几个参数很容易被那些有恶意的人拿到导致发一些恶意邮件等

2. 客户端IP
  • 早期的web先锋尝试使用客户端IP地址去标识一个用户,如果每个用户都有一个自己的IP地址的话,这种方式是可行的,web服务器可以通过承载http请求的TCP连接来获取到IP地址(由于HTTP在与服务端建立链接的时候依靠TCP进行连接,且在传输是通过一层一层的增加首部而找到最终的位置)在unix系统中调用getpeername(tcp_connection,…)可以获取到客户端的IP地址。
  • 但是这种方案是有很多问题的
  1. 客户端的IP是描述的是客户端的机器,而不是用户
  2. 很多的因特网服务提供商都是在用户登录时为其随机的分配IP,用户在每次登录是都会得到一个不同的地址
  3. 为了提高安全性,并对稀缺的地址资源进行管理,很多用户都是通过网络地址转换防火墙来浏览网络内容的。这些NAT设备 隐藏了防火墙后面哪些实际客户端的IP地址,将实际的客户端IP地址转换成一个共享的防火墙IP地址(和不同的端口号)
3. 用户登录
  1. web服务器无需被动的根据用户的IP地址来猜测他的身份,他可以要求用户通过用户名和密码进行认证,来显式的获取到用户的信息。
  2. 为了让web站点的登录更加的便捷,HTTP中包含了一种内建机制,可以使用www-Authenticate首部和Authorization首部向web站点传送用户的相关信息。只要登录成功,客户端就可以在每一条请求服务端的请求消息中带上用户名和密码了。
在这里插入图片描述
在这里插入图片描述
4. 胖URL

1.简单概括:web站点会对每个用户生成特定版本的url来追踪用户的得身份。客户端第一次请求服务端,服务端将客户的请求的url进行加工包装为一个胖的URL

在这里插入图片描述
在这里插入图片描述
5. cookie
  1. cookie简介 cookie是识别当前用户,实现持久回话的最好的方式。它定义了一些新的HTTP首部。cookie的存在也影响了缓存,大多数缓存和浏览器都不允许对任何cookie的内容进行缓存。
  2. cookie的类型 cookie分为两类会话cookie和持久cookie,会话cookie是一种临时cookie,它记录了用户访问站点时的设置和偏好,用户在退出浏览器就会将会话cookie销毁,持久的cookie生存的时间更长一些,他们存储在硬盘上,浏览器退出,计算机重启的时候他们热然存在。通常会用持久cookie维护某个用户周期性访问的站点的配置文件或登录名。会话cookie和持久cookie的区别就是过期时间不一样。
  3. cookie是如何工作的:
  • 用户首次访问web站点时,web服务器对用户一无所知。于是他就给用户打上一个标识,这样的话下次用户过来服务器就认识这个用户了。cookie中包含一个key value 这样的信息构成的列表。通过Set-Cookie或set-Cookie2HTTP响应(扩展)首部将其贴到用户身上去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cookie中可以包含任何任意的信息,但他们通常都只包含一个服务器为了进行跟踪而产生独特的识别码。如上图中极客时间网站的cookie表示服务的ID,由与我不是从刚开始访问的 接下来看下图是一个较完整和直观的的过程:

在这里插入图片描述
在这里插入图片描述
  1. cookie的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给他。因为浏览器要负责存储cookie的信息,所以此系统被称为客户端侧状态。正式名称叫http状态管理机制
  2. 用途
  • 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
  • 在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段Cookie里追加新的商品信息。结帐时,服务器读取发送来的Cookie就行了。
  • Cookie另一个典型的应用是当登录一个网站时,网站往往会请求用户输入用户名和密码,并且用户可以勾选“下次自动登录”。如果勾选了,那么下次访问同一网站时,用户会发现没输入用户名和密码就已经登录了。这正是因为前一次登录时,服务器发送了包含登录凭据(用户名加密码的某种加密形式)的Cookie到用户的硬盘上。第二次登录时,如果该Cookie尚未到期,浏览器会发送该Cookie,服务器验证凭据,于是不必输入用户名和密码就让用户登录了。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要有客户端识别和cookie机制呢?
  • 实现客户识别的几种方式
    • 1. HTTP首部
      • 2. 客户端IP
        • 3. 用户登录
          • 4. 胖URL
            • 5. cookie
            相关产品与服务
            NAT 网关
            NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档