概述

最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

客户端识别与cookie机制

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

2.http最初是一个匿名、无状态的请求/响应协议,它不是天生就具有丰富的识别特性的,但是涌现出很多用户识别机制

  • 承载用户身份信息的http首部。
  • 客户端IP地址跟踪,通过用户的IP地址对其进行识别。
  • 用户登录,用认证方式来识别用户。
  • 胖URL,一种在URL中嵌入识别信息的技术。
  • cookie,一种功能强大且高效的持久身份识别技术。

3.http首部识别

  • From首部:From首部包含了用户的E-mail地址,但由于垃圾邮件的散发,所以很少有浏览器会发送From首部。
  • User-Agent首部:可以将用户所用浏览器的相关信息告知服务器,但它没有为识别特定的用户提供太多有意义的帮助。
  • Referer首部:提供了用户来源页面,它并不能完全标识用户,但它确实说明了用户之前访问过哪个页面。通过它可以更好地理解用户的浏览行为和兴趣所在。

4.用户登录:服务器会返回401 Login Required HTTP响应码,并添加www-Authentication首部,要求用户登录,这样浏览器就会弹出一个登录对话框。但是这种识别方式需要在每个站点上都登录一次,非常繁琐。

5.胖URL:有些web站点会为每个用户生成特定版本的URL来追踪用户的身份,通常它会在URL路径开始或结束的地方添加一些状态信息,改动后包含了用户状态信息的URL被称为胖URL。Amazon就使用了胖URL这种识别方式。

6.胖URL存在几个很严重的问题:

  • 丑陋的URL。
  • 无法共享URL,因为包含了个人信息。
  • 破坏缓存,为每个用户生成特定的URL版本意味着不再有公共缓存了。
  • 逃逸口。如果用户无意请求另一个特定的url时,就会在无意中逃离胖URL,从而丢失用户信息和会话。
  • 会话是非持久的。用户退出登录时,所有的信息都会丢失。

7.cookie分为会话cookie持久cookie。会话cookie是一种临时cookie,它记录了用户访问站点时的设置和偏好,用户退出浏览器时,会话cookie就被删除了;持久cookie的生存时间更长一些,计算机重启时它们仍然存在,它被用来维护某个用户访问站点的配置文件或登录名。

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

9.产生cookie的服务器可以向Set-Cookie响应首部添加一个Domain属性来控制哪些站点可以看到那个cookie。比如,下面的http响应首部就是在告诉浏览器将cookie user="mary17"发给域".airtravelbargains.com"中所有站点。

Set-cookie: user="mary17"; domain="airtravelbargains.com"

10.cookie还有一个路径属性,表示只有访问这个路径才能得到这个cookie,如下所示:

Set-cookie: pref=compact; domain="airtravelbargains.com"; path=/autos/

11.cookies有2个版本:一个是版本0的Set-Cookie首部;另一个是版本1的Set-Cookie2首部。

12.cookie的滥用情况是存在的,第三方web站点使用持久cookie来跟踪用户就是一种最大的滥用,将这种做法与IP地址和Referer首部信息结合在一起,这些营销公司就可以构建起相当精确的用户档案和浏览模式信息。

《http权威指南》读书笔记10的更多相关文章

  1. css权威指南读书笔记-第10章浮动和定位

    这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...

  2. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  3. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

  4. 经典的性能优化最佳实践 web性能权威指南 读书笔记

    web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...

  5. Hadoop权威指南读书笔记

    本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系 ...

  6. Java性能优化权威指南-读书笔记(五)-JVM性能调优-吞吐量

    吞吐量是指,应用程序的TPS: 每秒多少次事务,QPS: 每秒多少次查询等性能指标. 吞吐量调优就是减少垃圾收集器消耗的CPU周期数,从而将更多的CPU周期用于执行应用程序. CMS吞吐调优 CMS包 ...

  7. Java性能优化权威指南-读书笔记(三)-JVM性能调优-内存占用

    新生代.老年代.永久代的概念不多说,这三个空间中任何一个不能满足内存分配请求时,就会发生垃圾收集. 新生代不满足内存分配请求时,发生Minor GC,老年代.永久代不满足内存分配请求时,发生Full ...

  8. Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具

    一:CPU 1. 用户态CPU是指执行应用程序代码的时间占总CPU时间的百分比. 系统态CPU是指应用执行操作系统调用的时间占总CPU时间的百分比.系统态CPU高意味着共享资源有竞争或者I/O设备之间 ...

  9. Kafka权威指南 读书笔记之(五)深入Kafka

    集中讨论以下3 个有意思的话题 :• Kafka 如何进行复制:• Kafka 如何处理来自生产者和消费者的请求 :• Kafka 的存储细节,比如文件格式和索引. 集群成员关系 Kafka 使用 Z ...

  10. Kafka权威指南 读书笔记之(四)Kafka 消费者一一从 Kafka读取数据

    KafkaConsumer概念 消费者和消费者群组 Kafka 消费者从属于消费者群组.一个群组里的消费者订阅的是同一个主题,每个消费者接收主题一部分分区的消息. 往群组里增加消费者是横向伸缩消费能力 ...

随机推荐

  1. sftp免密登录

    最近在linux服务器上搭建了一个sftp服务器,在做免密登录时,因为理解的问题,走了些弯路,在此记录一下. 先来说一下服务器端,在服务端的每一个用户的根目录下都有一个.ssh目录,在这个下面放的公私 ...

  2. 11.Redis缓存设计

    11.Redis缓存设计11.1 缓存的收益和成本11.2 缓存更新策略11.3 缓存粒度控制11.4 穿透优化11.5 无底洞优化11.6 雪崩优化11.7 热点key重建优化11.8 本章重点回顾

  3. 探索未知种族之osg类生物---渲染遍历之裁剪一

    前言 上面我们用了四节课的内容,讲解了一些osg概念性的内部原理.希望大家可以再看今天的讲解之前先再仔细的研究一下前四节的内容.这样你就会对整个osg的渲染过程有一个更加清晰的认知,有助于理解下面两个 ...

  4. LINUX中printf与echo的区别

    (1)首先echo是回显,即代表回车显示,是自带换行的:而printf只是打印出来,没有换行(2)echo只是回显没有变量替换功能:printf是有的举例:假如我们定义好变量a='hello worl ...

  5. 用grunt对css代码进行压缩

    1.先安装Node.js环境 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器.Node.js的下载链接 安装完后进行验证 2.安装grunt及插件 通 ...

  6. bittorrent 学习(二) LOG日志和peer管理连接

    代码中的log.h log.c比较简单 void logcmd() 记录命令  int logfile();运行日志的记录 int init_logfile() 开启log文件 源码比较清晰也很简单. ...

  7. keepalived高可用简介与配置

    keepalived简介 keepalived介绍 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP ...

  8. Scrum冲刺阶段5

    成员今日完成的任务 人员 任务 何承华 学习后端设计 陈宇 后端设计 丁培辉 学习后端设计 温志铭 日程添加界面设计(后半段设计) 杨宇潇 日程添加界面设计(后半段设计) 张主强 服务器构建学习 成员 ...

  9. java反射获取Object的属性和值

    在看反射顺便做个笔记,目前知道的反射的Object都是要有对象的也就是实体Bean. import java.lang.reflect.Field; import java.util.ArrayLis ...

  10. 常用API3 BigData

    基本类型包装类 大家回想下,在第二天我们学习Java中的基本数据类型时,说Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢 基本类型包装类概述 在实际程序 ...