【HTTP】初识代理
Web代理(proxy)位于客户端和服务器端之间。HTTP的代理服务器既是Web服务器端又是Web客户端。
1. 代理和网关的对比
代理连接的是两个或者多个使用相同协议的应用程序。
网关连接的是两个或者多个使用不同协议的端点。网关扮演的是“协议转换器”的角色。
实际上,代理和网关的区别很模糊。由于浏览器和服务器端使用的http版本的不同,代理也经常做一些协议转换的工作。
2. 为什么使用代理
改善安全性,提高性能,节省费用。代理服务器可以看到并接触到所有流过的HTTP的流量,所以代理可以监视流量并对其进行修改,以实现很多增值的WEB业务。一些应用场景:
儿童过滤器:过滤不良页面;(出口代理)
文档访问控制:根据用户授予不同的权限;
安全防火墙:控制安全
Web缓存(访问入口代理)
反向代理:他们可以发起与其他服务器的通信,以便按需定位所请求的内容。
内容路由器
转码器 :在将内容发给客户端之前,可以修改内容的主体格式。
匿名者:主动从HTTP报文中删除身份信息 (例如:客户端的IP地址),从而提高私密性和匿名性。
3. 客户端的代理设置
3.1 手工配置
3.2 PAC文件,proxy auto-configuration,代理自动配置 。PAC文件是一些小型的JS程序,可以在运行过程中计算代理的配置。因此,是一种个动态的代理配置解决方案。
3.3 客户端代理配置(WPAD, web proxy auto discovering protocol)。使用逐级上升策略自动为浏览器找到合适的PAC文件。实现WPAD的客户需要
用WPAD找到PAC的URI;
从指定的URI 获取PAC文件;
执行PAC文件来判定代理服务器;
为请求使用代理服务器。
WPAD会使用一系列资源发现技术判定适当的PAC文件。 并不是所有的组织都能够使用所有的发现技术,所以WPAD使用了很多发现技术。WPAD会一个接一个的对每种技术进行尝试,知道成功为止。
当前的WPAD协议规范按顺序定义了下列技术:
动态主机配置协议(Dynamic Host Configuration Protocol, DHCP);
服务定位协议(Service Location Protocol,SLP);
DNS知名主机名;
DNS SRV记录;
4. 代理中一些棘手的问题
显示的代理要求在请求报文中使用完整的URI来解决这个问题。
虚拟主机Web服务器要求使用Host首部来承载主机和端口号信息。
【HTTP】初识代理的更多相关文章
- 初识代理——Proxy
无处不在的模式——Proxy 最近在看<设计模式之禅>,看到代理模式这一章的时候,发现自己在写spring项目的时候其实很多时候都用到了代理,无论是依赖注入.AOP还是其他,可以说是无处不 ...
- 初识AOP与动态代理
AOP AOP是指在jvm运行时, 动态将代码切入到指定位置. OOP是一个维度上写代码, AOP是把他切开来, 变成立体的. 这样的好处是: 业务逻辑跟辅助逻辑分离, 例如日志打印, 性能监控, 安 ...
- 初识nginx反向代理和缓存机制
实现的需求图: 环境: nginx缓存和反向代理服务器:192.168.0.224 实际存储数据机器:192.168.0.37 一.实现反向代理 1.安装nginx,两台服务器都需要安装 1)安装 ...
- 初识Swift中的值和引用,循坏引用、代理的注意点
1.0 在Swift中分有值类型和引用类型 Int .String . 结构体和枚举都属于值类型, 将值类型传递给方法是,将在内存中创建其副本,并传递这个副本:这样我们就可以随心所欲修改它,而不用担心 ...
- 死磕Spring之AOP篇 - 初识JDK、CGLIB两种动态代理
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...
- 初识Spring框架
一.Ioc 1)概念:Ioc(Inversion Of Control)控制反转,也被称为依赖注入DI(Dependency Injection),是面向对象编程的一种思想. 2)作用:用来减低程序代 ...
- 初识 MySQL 5.6 新功能、参数
摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不 ...
- IOS之UI -- UITableView -- 1 -- 相关初识
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- [转]反向代理过程与Nginx特点详解
原文链接:<Nginx搭建反向代理服务器过程详解> 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内 ...
随机推荐
- android 4.0 禁用系统home键
2.2 禁用系统home键.这里不说了. 近期项目有一个需求,禁用系统的全部键.像menu, home, back.同一时候还要是想点击响应与view的弹出. 就是UI这部分要正常. back键我们自 ...
- (七)Thymeleaf的 th:* 属性之—— th: ->设值& 遍历迭代& 条件判断
3.4 属性值的设置 3.4.1 使用th:attr来设置属性的值 <form action="subscribe.html" th:attr="action=@{ ...
- MvcPager 分页示例 — 应用CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @model PagedList<string> <h5>Digg style:</h5> ...
- 关于Android项目中的分层,参考eoecn开源项目(8.29)
以下为eoecn开源项目的分层情况: ├ cn.eoe.app --存放程序全局性类的包├ cn.eoe.app.adapter --存放适配器的实现类的包 ├ cn.eoe.app.adapter. ...
- 遍历list,字典
private void Form1_Load(object sender, EventArgs e) { List<int> ids = new List<int>(); i ...
- 监听EditText字数
editContent.addTextChangedListener(new TextWatcher() { private CharSequence temp;private int editSta ...
- Oracle的substr函数简单用法与substring区别
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 subst ...
- JSP开发中的基础语法
JSP 语法 JSP开发中的基础语法. 脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式: <% 代码片段 %> 或者 ...
- PHP-Manual的学习----【语言参考】----【类型】-----【对象】
Object 对象1.对象初始化要创建一个新的对象 object ,使用 new 语句实例化一个类: class foo{ function do_foo(){ echo &quo ...
- Android源码及repo下载——亲自测试下载源码成功!
经过一段时间煞费苦心的下载都未能成功后,如今终于把android源代码下载成功,很是兴奋! 废话不多说,直接说下步骤: 1.安装git和curl:sudo apt-get install git-co ...