我的代理如何拦截数据包

时间:2016-12-20 14:52:51

标签: java networking proxy jetty conceptual

我有两个网络服务器AC。由于规则,政策等A无法直接与C' ( C requires requests to have special security headers and进行通信,A`不支持此操作。

我想在Java中创建一个名为B的“代理”,以促进AB之间的沟通,但我在概念上遇到了问题。

创建代理时,您是否必须更改所有服务上的硬编码URL才能通过代理传输?然后我想你必须以某种方式将目的地作为查询参数传递,例如

http://proxy.com/?destination=mydestination.com

这是代理如何工作的?

(我发现了一些类似的问题,但他们没有解决我所遇到的基本问题,即How packets reaches Destination throgh proxy servers?

1 个答案:

答案 0 :(得分:0)

不要从头开始编写自己的代理,这将是一个重做,那里有很多代理实现

Spring框架

标准Servlet

如果您对如何构建自己的代理感兴趣,这里有一个使用spring框架的简单示例(Servlet实现与spring实现相差不远)

@RestController
public class ProxyController {

/**
 * request handler for all the requests on the registered context intended to be proxied
 *
 * @param request
 * @return
 */
@RequestMapping("/**")
public String defaultGateway(HttpServletRequest request) {
    // edit the original request headers,body etc
    String originalPath =  request.getRequestURI();
    // then fire another HTTP request using the same URI
    return "ProxiedResult"; // return back the result you get from
 }
}

上面的示例是关于如何实现HTTP代理或它是如何工作的起点,有许多内容要涵盖,例如安全性如下所示