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核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...
随机推荐
- NOIP2016 巨凉无比的感言
打一场比赛检验自己的水平. D1: 我日苟了,考得跟屎一样. 第一题不说了,奇水无比(跟17年相比的话). 第二题,大名鼎鼎啊... 虽然以前看过题解但是实际做起来只会25分暴力...至少比半年前好多 ...
- A1077. Kuchiguse
The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...
- WCF开发实战系列三:自运行WCF服务
WCF开发实战系列三:自运行WCF服务 (原创:灰灰虫的家 http://hi.baidu.com/grayworm)上一篇文章中我们建立了一个WCF服务站点,为WCF服务库运行提供WEB支持,我们把 ...
- nginx 301 302跳转配置总结
首先看简单的代码示例,关于nginx 301 302跳转的. 301跳转设置: server { listen 80; server_name 123.com; rewrite ^/(.*) http ...
- C#网络编程之进程管理
这里是视频讲解地址: 这里是代码: using System; using System.Collections.Generic; using System.Linq; using System.Ne ...
- vue中extend/component/mixins/extends的区别
vue中extend/component/mixins/extends的区别 教你写一个vue toast弹窗组件 Vue.extend构造器的延伸
- liunx必知必会(2)
一.SSH免密登陆配置 1.相关概念 SSH 为 Secure Shell(安全外壳协议) 的缩写. 很多ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用 ...
- cdqz2017-test8-Tree(点分树)
n个点的带点权带边权的树,设点权为a[i],边权为b[i] 一棵树有n*(n-1)/2个点对, 定义这棵树的价值为任意两点对的(a[x]^a[y])*dis(x,y) 有m次修改一个点的点权的操作 输 ...
- JAVA泛型中的类型擦除及为什么不支持泛型数组
一,数组的协变性(covariant array type)及集合的非协变性 设有Circle类和Square类继承自Shape类. 关于数组的协变性,看代码: public static doubl ...
- IPv4套接字地址结构
一.IPv4套接字地址结构(POSIX定义) (1)长度字段sin_len是为增加对OSI协议的支持而随4.3BSD-Reno添加的:并不是所有的厂家都支持套接字地址结构的长度字段,而且POSIX规范 ...