• 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远程得到的字符串

  • 相关阅读:
    《css世界》学习摘要
    微信小程序知识点积累
    事件冒泡 事件委派
    遍历后台返回数据
    初识open stack
    keystone初识
    KVM详解
    openstack详解
    NoSQL之Redis集群理论
    gfs分布式文件系统
  • 原文地址:https://www.cnblogs.com/TheoryDance/p/5118804.html
Copyright © 2020-2023  润新知