Cookie

现在的web站点希望能够提供个性化的接触,它们希望对连接另一端的用户有更多的了解,并且能在用户浏览页面时对其进行跟踪。比如说Amazon.com这样的流行在线商店可以通过以下几种方式实现站点的个性化:

  • 个性化的问候
    专门为用户生成的欢迎词和页面内容,使用户感觉更加亲切。
  • 有的放矢的推荐
    通过了解客户的兴趣,商店可以推荐一些他们认为客户会感兴趣的商品。
  • 管理信息的存档
    在线购物的用户不喜欢一次又一次的填写繁琐的地址和信用卡信息。有些站点会将这些信息存储在一个数据库中,只要他们识别出用户就可以使用存档的信息,使得购物体验更加便捷。
    HTTP识别用户有下列技巧。
  • 承载用户身份信息的HTTP首部。
  • 通过用户的IP地址进行识别。
  • 用户登录,用认证方式来识别用户。

1.HTTP首部

承载用户相关信息的HTTP首部:

首部名称 首部类型 描述
From 请求 用户的E-mail地址
User-Agent 请求 用户的浏览器软件
Referer 请求 用户是从这个页面上依照链接跳转过去的
Authorization 请求 用户名和密码
Client-IP 扩展请求 客户端IP地址
Cookie 扩展请求 服务器产生的ID标签

From首部包含了用户的E-mail地址,每个用户都有不同的E-mail所以在理想情况下这个首部可以用来识别用户,但是由于用户的E-mail地址太过隐私,一般都不会发送。
User-Agent首部可以将用户所用浏览器的信息告知服务器,包括程序名称和版本,但是这个对于识别用户作用不大。
Referer首部可以告诉服务器是从哪个页面上跳转过来的,它可以说明用户之前访问过哪个页面,通过它可以更好的理解用户的浏览行为,了解用户的兴趣。
From,User-Agent,Referer首部都不足以实现可靠的识别。

2.客户端IP地址

用户的IP地址一般很少变化,在HTTP首部并不提供客户端IP地址,但是we服务器可以找到承载HTTP请求的TCP连接另一端的IP地址,所以通过客户端IP地址去识别用户看起来是可行的。
但是这种方法存在的几个缺点限制了其作为客户端识别手段的应用:

  • 很多因特网服务提供商会动态分配IP地址。这样其就不能作为识别手段了。
  • HTTP代理和网关通常会打开一些新的到原始服务器的TCP连接,web服务器看到的将是代理服务器的IP地址,而不是客户端的。

3.用户登录

如果服务器希望在为用户提供对站点的访问之前,先行登录,可以向浏览器回送一条401 Login Required。然后浏览器会显示一个登录对话框,并用Authorization首部在下一条对服务器的请求中提供这些信息。
但是这个方法的缺点在于,如果要访问很多web站点时,将是非常繁琐的,可能每个站点对于密码格式的要求都不一样,因此要记住很多密码,对于每天要访问很多web站点的人来说,这是非常头疼的一件事。

4.Cookie

Cookie是当前识别用户。实现持久会话的最好方式。

Cookie是如何工作的

用户首次访问web站点时,web服务器对用户一无所知。web服务器希望这个用户会再次回来,所以想给这个用户加上一个独有的Cookie。这样以后它就可以识别出这个用户了。Cookie中包含一个由名值对这样的信息构成的任意列表,并通过Set-Cookie或Set-Cookie2HTTP响应首部将其贴到用户身上。


Cookie工作原理.png

浏览器会记住从服务器返回的Set-Cookie或Set-Cookie2首部中的Cookie内容,并将Cookie集存储在浏览器的Cookie数据库中。将来用户返回同一站点时,浏览器会挑中那个服务器贴到用户上的那些Cookie,并在一个Cookie请求首部中将其传回去。

版本0的Set-Cookie首部

Set-Cookie首部有一个强制性的cookie名和cookie值。后面跟着可选的cookie属性,中间由;隔开。

Set-Cookie属性 描述及实例
NAME=VALUE 强制的,例:id="adcdef"
Expires 可选的。这个属性会指定一个日期字符串,用来定义Cookie的实际生存期,一旦到了过期日期,就不再存储或发布咋合格cookie了。eg:Set-Cookie:foo=bar;expires=Wednesday,09-Nov-99 23:12:40 GMT
Domain 可选的。服务器发送这个字段的意思是告诉浏览器只向这个域指定的服务器发送cookie,而不是向所有的服务器发送Cookie,如果没有指定的域,就默认为产生Set-Cookie响应的服务器的主机名。eg:Set-Cookie:foo=bar;domain=@“joes-hardware.com
path 可选的。通过这个属性可以为服务器上特定的文档分配Cookie。eg:foo=bar;path=/orders
Secure 可选的。如果包含了这个属性,则只有在HTTP使用SSL时才会发送cookie。eg:Set-Cookie:foo=bar;secure
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容