使用org.restlet.routing.Redirector进行透明反向代理

时间:2014-04-16 13:46:09

标签: java http-headers reverse-proxy restlet restlet-2.0

我正在尝试使用org.restlet.routing.Redirector创建透明的反向代理。

为了简单起见,我们要说的是重定向所有指向

的HTTP请求。
http://localhost:80

将被分派到另一个不相关的HTTP服务器:

http://localhost:8080

我使用重定向器(MODE_SERVER_OUTBOUND模式)编写了一个简单的反向代理,它实际上可以正常工作,因为它可以正确地调度请求并处理重定向。

但是现在让我们说http://localhost:8080的资源受到摘要认证机制的保护。

现在问题是,重定向器处理请求和响应中的标头已被删除(来自文档WRT MODE_SERVER_OUTBOUND):

  

请注意,在此模式下,HTTP请求的标头存储在   请求的属性在调度之前被删除。还有,当一个   HTTP响应返回,标题也被删除。

使Digest身份验证机制无法使用。

我猜反向代理应该返回响应,好像它本身就是原点。

有没有办法让标题保持原样,以便终端服务器(http://localhost:8080)和客户端可以进行通信,因为它们之间没有代理?

1 个答案:

答案 0 :(得分:0)

感谢Arjohn(参见Restlet mailing list中的相关讨论),找到了解决方案:

  

我们现在已从restlet 2.1.4更新到2.2.0,令我们意外   修复了重定向器问题。事实上,重定向器工作得很好   开箱即用,包括摘要认证。没有子类化   需要。所以这可能是2.1.4中已修复的错误   2.2开发中的某个地方。