http转发
该http转发,我感觉有点类似于负载均衡(我还没有详细了解过负载均衡)。
现在有三个站点,想自己建立一个web,对三个站点进行整合,效果如图所示:
a)现状:浏览器需要访问3个站点,需要记住3个地址,并分别访问
b)实现:写一个web0对请求进行转发,用户只需要与web0交互,不管web1~3
实现思路:在web0中,接受来自浏览器的请求,通过一定的规则,将该http请求转发到对应的web去,将返回的结果,传递会浏览端。
在web中使用到的知识点:URLConnection
在web0中只需要编写一个过滤器,将所有的请求进行拦截,得到请求资源的url,请求方式,请求参数
然后通过根据一定的规则使用URLConnection连接到对应的webn中,接受URLConnection的返回信息,然后将URLConnection的响应头,得到的内容体,全部设置到web0的响应中,发送到客户端即可,在这过程中要注意几点:
①我们知道当client与server初次连接的时候回在客户端上有一个session,在许多web中这个session中存放了一些用户访问该站点的一些权限等等,而client-server是通过cookie来识别的,当初次建立连接的时候,server会写入一个set-cookie到响应中,在后面的访问请求中会将该cookie作为请求头信息,这样server就可以识别client了
使用URLConnection访问需要设置cookie的值,不然server就会把该次访问当成一台新的客户端,相当于使用不了session了
②得到返回的内容体,因为请求信息可能是文本,以及二进制信息,所以在将URLConnection得到的信息使用字节流的方式处理,不用字符流
③在设置响应头的时候,原则上是URLConnection响应的消息头是什么,就设置到web0的响应头中,但是我测试的结果是不能设置Trans-Encoding的值为chunk,设置了他,当请求json数据的时候不能够正常得到,如果不设置这个头信息,就可以访问,原因未知。
④注意sessionId,在第一访问时会返回sessionId在响应头set-cookie中,这个头不能够设置成通过URLConnection远程得到的字符串
http转发的更多相关文章
- 使用AWS亚马逊云搭建Gmail转发服务(三)
title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...
- Spring MVC重定向和转发以及异常处理
SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
- 使用AWS亚马逊云搭建Gmail转发服务(二)
title: 使用AWS亚马逊云搭建Gmail转发服务(二) author:青南 date: 2014-12-31 14:44:27 categories: [Python] tags: [Pytho ...
- 使用AWS亚马逊云搭建Gmail转发服务(一)
title: 使用AWS亚马逊云搭建Gmail转发服务(一) author:青南 date: 2014-12-30 15:41:35 categories: Python tags: [Gmail,A ...
- A chatroom for all! Part 1 - Introduction to Node.js(转发)
项目组用到了 Node.js,发现下面这篇文章不错.转发一下.原文地址:<原文>. ------------------------------------------- A chatro ...
- JavaWeb_day04搜索_乱码_路径_转发重定向_cookie
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 搜索功能 DAO层都是一些数据库的增删改查操作 Ser ...
- SpringMVC传值、转发、重定向例子
练习接收页面参数值 使用request 使用@RequestParam注解 使用实体对象 练习向页面传出数据 使用HttpServletRequest和session 使用ModelAndView对象 ...
- 服务发现与健康监测框架Consul-DNS转发的应用
关于Consul Consul是一个提供服务注册与发现,健康监测,Key/Value存储以及多数据中心存储的分布式框架.官网地址是https://www.consul.io/,公司初步应用后我们老大觉 ...
- SecutrCRTt 连接VirtualBox 中的Ubuntu -端口转发
端口转发: 设置>网络>端口转发 端口转发: 子系统地址通过在Linux系统总使用ifconfig查看: 还需要在linux主机上安装sshd sudo apt-get insta ...
- springMVC异常&&重定向&&转发
SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
随机推荐
- HDU 3081 Marriage Match II (网络流,最大流,二分,并查集)
HDU 3081 Marriage Match II (网络流,最大流,二分,并查集) Description Presumably, you all have known the question ...
- Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities
http://codeforces.com/contest/962/problem/E E. Byteland, Berland and Disputed Cities time limit per ...
- 自动检测ie低版本,并显示升级浏览器的自定义页面,当用f12再把浏览器版本提高的时候,又会自动显示正常的页面。
代码: <!--[if lte IE 9 ]> <div class=""> //这里面可以添加自己定义的内容 </div> <scrip ...
- kubectl命令自动补全
kubectl这个命令行工具非常重要,与之相关的命令也很多,我们也记不住那么多的命令,而且也会经常写错,所以命令自动补全是非常有必要的,kubectl命令行工具本身就支持complication,只需 ...
- Winform下载文件并显示进度条
本来是要研究怎样判断下载完成,结果找到这个方法,可以在这个方法完成之后提示下载完成. 代码如下: using System; using System.Collections.Generic; usi ...
- myeclipse 怎么安装与激活
摘录自:http://blog.csdn.net/u012318074/article/details/71310553 第一步:安装完成后不要运行MyEclipse 第二步:下载对应的破解文件 第三 ...
- java日期相关
JAVA中获得一个月最大天数的方法 参考博客:http://www.cnblogs.com/relucent/p/4566582.html Calendar 类是一个抽象类,为日历字段之间的转换提供了 ...
- javascript 事件冒泡与取消冒泡
事件冒泡: 当一个元素上的事件被触发时,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先中被触发,这一过程被称为事件冒泡. 这个事件从原始祖先开始,一直冒泡到DOM树的最上层.(bug) ...
- python 小程序,打印数字
要求如下: 指定一个数字 x ,然后打印 1到x 的所有数字,并问是否继续打印,否退出程序,是就继续.再指定一个数字 y ,如果 y> x 就显示 x+1 到 y 的所有数字,y <= x ...
- Java Web之路(一)Servlet
前言 执行过程 Servlet 生命周期.工作原理:http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html Servlet的生命周期 ...