DataSnap服务器 - 将HTTP请求重定向到另一个DataSnap服务器

时间:2013-06-15 18:02:34

标签: delphi rest redirect delphi-xe2 datasnap

我的应用程序包含一个“网关”DataSnap REST服务器,它是所有客户端的第一个访问点。根据客户端在其请求中传递的用户名(基本身份验证),需要将请求重定向到另一个DataSnap服务器。我的问题 - 无论如何构建“网关”服务器,以便它只是根据用户名或HTTP请求标头中的其他值将请求重定向到另一台服务器?我试图避免重复“网关”服务中的所有服务器方法,即我不想将2个请求“链接”在一起,但不知何故只有1个请求被重定向。

不确定这是否可行,但是认为有人可能证明我错了?我正在使用Delphi XE2,而DataSnap服务器是Windows服务。

2 个答案:

答案 0 :(得分:2)

我可以在这里看到两个选项:

  • 仅在登录后使用第一台服务器返回真实服务器的地址

  • 根据身份验证数据在Datasnap服务器和RewriteRules之前使用Apache或NGINX反向代理(但是今天我的Google-Fu似乎已经用尽了,也许这可以作为HTTP / Apache specfifc问题放在这里SO)

答案 1 :(得分:0)

简短版本:解决方案将取决于您知道将请求定位到哪个级别(HTTP,DataSnap,介于两者之间)。

如果您可以在DataSnap级别做出决定,有两种解决方案:

  • 纯粹主义者这样做的方法是编写一个通用的DataSnap网关,可以查询datasnap目标服务器,为它动态创建代理服务器和客户端,然后拦截流量并决定哪个datasnap目标服务器将请求移交给
  • 更加务实的方法就是你害怕的方法。

另一种方法是在HTTP级别。只有在可以在HTTP级别确定请求应该移交给哪个目标服务器时,这才有效。