http

《HTTP权威指南》每章的知识点总结

View the Project on GitHub lvzhenbang/http

内容提要

web的中间实体

为什么使用代理

1、儿童过滤器:如服务器响应的成人内容进行过滤

2、文档访问控制:验证客户端访问某个的文件需要的证书

3、安全防火墙:提供一个防火墙保护客户端或服务器

4、web缓存(缓存资源的副本):对客户端响应资源的副本,节省带宽、减少网络拥堵

5、反向代理(原始服务的替代物,能访问其他服务器,作服务器加速器使用):反向代理伪装成原始服务器,不过与服务器不同的是反向代理还可以向其他服务器发送请求,以便实现按需定位所请求的内容!

6、内容路由器:比如网络中实现为了一些付费用户提供更好、更快的网络速度,让请求发往缓存服务器,而没有付费的用户请求则发往更远或原始服务器!

7、转码器(比如改变图片格式,以便更轻巧利于传输)

8、匿名者:保护客户端隐私

代理去往何处

1、出口代理:部署在本地网络端,用于保护本地网络或者限制公司带宽

2、访问(入口)代理:用于实现提供缓存响应

3、反向代理:部署在服务器端本地网络上,用于实现更精确的请求和提供性能

4、网络交换代理:部署在网络上,用于检测流浪等

1、修改客户端:比如现在的客户端都支持收手动和自动配置代理!

2、修改网络:网络通过一些技术在客户端不知情的情况揽入流量进入代理!

3、修改dns命名空间:把主机名映射为代理的ip地址,比如修改系统的dns映射文件,让代理伪装成原始服务器,从而把web请求导入代理!

4、修改服务器:让服务器返回一个重定向有关的代码,把http请求报文导入到代理!

客户端代理设置

与代理有关的一些棘手问题

1、发送给服务其的url可以是相对路径,而发送给代理的是包含方法、主机名等完整路径!

2、与虚拟主机目录同样存在的问题,可以通过在请求报文的host首部发送确定的主机信息!

3、拦截代理会受到部分url!

4、代理既可以处理代理请求,也可以处理服务器请求!

5、转发过程中对URI的修改

6、URI的客户端自动扩展和主机名解析

7、没有代理URI的解析

8、有显示代理的URI的解析

9、有拦截代理的URI的解析

追踪报文

	GET /index.html HTTP/1.0
	Accept: text/html
	Host: www.joes-hardware.com
	Via: 1.1 proxy-62.irenes-isp.net,1.0 cache.joes-hardware.com

via字符告诉我们报文流经了两个代理。这个字符串说明第一个代理名为proxy-62.irenes-isp.net,它实现了HTTP/1.1协议,第二个代理被称为cache.joes-hardware.com,实现了HTTP/1.0。

注:如果响应报文是通过代理转发的,一定要确保代理没有修改Server首部。Server首部是用于原始服务器的。代理应该添加的是Via首部。

代理认证

代理的互操作性