概述
最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。
代理
1.使用代理的示例:
- 儿童过滤器:阻止学生访问成人内容。
- 文档访问控制:不同的客户端访问内容有不同的权限。
- 安全防火墙:详细地检查流量。
- web缓存。
- 反向代理:假扮服务器,为了提高性能,比如服务器加速器。
- 内容路由器:根据内容类型将请求导向特定的web服务器。
- 转码器:在将内容发送给客户端之前,修改内容弄的主体格式。
- 匿名者:从http报文中删除身份特性,比如客户端ip地址,referer首部,cookie等。
2.代理服务器的部署:
- 出口代理:控制本地与大型因特网之间的流量。
- 入口代理:缓存代理等。
- 反向代理:部署在web服务器之前,会冒用web服务器的名字和ip地址,这样所有的请求就会被发送给代理而不是服务器了。
- 网络交换代理:对流量进行监控等。
3.怎样使客户端流量流向代理:
- 修改客户端,比如chrome里面添加代理的设置。
- 修改网络,依赖于http流量的交换设备或路由设备,在客户端不知情的情况下,对流量进行拦截,并将流量导入一个代理。
- 修改DNS的命名空间,用特殊的动态DNS服务器根据需要来确定适当的代理或服务器。
- 修改web服务器配置,向客户端发送一条http重定向命令,将客户端请求重定向到一个代理上。
4.代理URI和服务器URI的不同:
- 显式的代理要求在请求报文中使用完整的URI;虚拟web服务器要求使用Host首部来承载主机和端口信息。
- 没有设置代理时,它会发送部分URI。
5.反向代理和拦截代理都可以处理部分URI请求。
6.via首部字段列出了与报文途径的每个中间节点有关的信息,报文每经过一个节点,都必须将这个中间节点添加到via列表的末尾。via首部可以用来诊断报文循环。
7.Server首部是用于原始服务器的,而代理添加的是via首部。
8.代理服务器可以在转发报文时对其进行修改,可以添加,修改或删除首部,也可以将主体部分转换成不同的格式。通过http/1.1的trace方法,用户可以跟踪经代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。
9.通过http options方法,客户端可以发现web服务器或者其上某个特定资源所支持的功能,发现服务器对可选特性的支持。
10.Allow首部字段列出了请求URI标识的资源所支持的方法列表,如果请求URI为*的话,列出的就是整个服务器所支持的方法列表。