我有两个网络服务器A
和C
。由于规则,政策等A
无法直接与C' (
C requires requests to have special security headers and
进行通信,A`不支持此操作。
我想在Java中创建一个名为B
的“代理”,以促进A
和B
之间的沟通,但我在概念上遇到了问题。
创建代理时,您是否必须更改所有服务上的硬编码URL才能通过代理传输?然后我想你必须以某种方式将目的地作为查询参数传递,例如
http://proxy.com/?destination=mydestination.com
这是代理如何工作的?
(我发现了一些类似的问题,但他们没有解决我所遇到的基本问题,即How packets reaches Destination throgh proxy servers?)
答案 0 :(得分:0)
不要从头开始编写自己的代理,这将是一个重做,那里有很多代理实现
如果您对如何构建自己的代理感兴趣,这里有一个使用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代理或它是如何工作的起点,有许多内容要涵盖,例如安全性如下所示