zoukankan      html  css  js  c++  java
  • 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远程得到的字符串

  • 相关阅读:
    springboot2.0整合es的异常总结
    redis的主从模式搭建及注意事项
    一个可配置的爬虫采集系统的方案实现
    初识 go 语言:方法,接口及并发
    初识 go 语言:数据类型
    Science论文"Clustering by fast search and find of density peaks"学习笔记
    OpenCV和Matplotlib色彩空间模式不一致的问题
    Using OpenCV Java with Eclipse
    KMeans聚类算法Hadoop实现
    Ubuntu环境变量——添加与删除
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/5118804.html
Copyright © 2011-2022 走看看