基于HTTP协议的C/S架构中服务器如何获取用户身份

基于HTTP协议的C/S架构中服务器如何获取用户身份


HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。如果服务器需要辨别正在访问的用户信息有以下几种方法:
1、请求消息中的一些包含用户信息的HEADERS。
2、客户端IP地址;
3、用户登录ID和密码;
4、FAT URL,即在URL中嵌入用户信息;
5、使用Cookies。

实现用户身份识别的通常做法是:让浏览器在发送请求消息时在其中加入一些能够拥有用户身份识别的头域,如下表:


上表中,From头域是用户Email地址,显然,这种做法会泄露用户的私人信息,不够安全,很多浏览器不会允许这样做的。

User-Agent通常是指用户正在使用的浏览器版本,例如IE7、IE9、Chrome这样的值,这个信息对用户身份识别来说没什么用,充其量也只是反应当前客户的一些软件偏好。

Referer是指用户是从哪里链接到该网页的,例如一个用户通过google搜索到一个需要的网站,那么它在访问该网站时就会包含一个Referer头域: http://www.google.com这样的头域信息,这也能反应用户的某种上网习惯。

Authorization头域包含了用户的登录名和密码信息,这是一种应用非常广泛的用户身份识别手段,可以让服务端直接获取用户的身份,并作出相应的授权。

Client-ip也能反应用户的地址信息,例如我们在访问有些BBS时,页面上会显示欢迎来自XX省XX市的网友,服务器就是根据请求消息中的客户端IP地址来识别用户的地域信息。但这种方法对于动态IP地址通常会显示错误,尤其是那些只有一个统一出口的私网,该私网内所有用户的访问都会通过NAT映射为相同的出口IP地址。

X-Forwarded-For是指如果客户端消息经过 Proxy达到源服务器,那么Proxy会通过该头域记录原始客户端的IP地址,这样服务器既能得到Proxy的地址,也能得到真实客户端的IP。

Cookie是由服务器产生,发给并存储在Client端浏览器的文本文件(一般经过加密)。当用户再次访问该服务器时,就会读取相应的Cookies文件并发给服务器,服务器从而识别出用户。注意,Cookies的内容不能被缓存!


下面重点介绍cookies:

cookies可以分为两类:seesion cookies和persistent cookies。session cookie是一个临时cookie,它用来跟踪用户在浏览网页时的设置,在退出浏览器时session cookie会被自动删除;persistent cookies会一直存放在磁盘文件中(除非用户手动删除),它主要用来保存用户的配置和登陆账号等信息,这样,当用户下次再访问该网站时,可以不需要再输入账号了,浏览器会读取cookies的内容并自动填充用户表单信息。

当用户第一次访问某个网站时,Server对该用户一无所知,但Server认为该用户可能会再次光临,所以,Server会给该用户贴上一个唯一的cookie,这样当用户再次访问时,就能轻松的认出这个用户。
Server在响应消息中通过设置Set-Cookie或Set-Cookie2头域给用户返回一个cookies(通常包含一个id=value的键值对),用来标识当前访问的用户。这样,浏览器就存储了这个cookies,当用户再次访问这个网站时,浏览器在发送请求消息时会在Cookie头域中设置对应的id值,Server通过检索这个id值,就能识别出这个之前到访过的用户。整个流程如下图所示:
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值