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

3
我的应用程序由一个“网关”DataSnap REST服务器组成,它是所有客户端的第一个访问点。根据客户端传递的请求中的用户名(基本身份验证),需要将请求重定向到另一个DataSnap服务器。我的问题是 - 是否有任何方式构建“网关”服务器,使其根据用户名或HTTP请求标头中的其他值简单地将请求重定向到另一个服务器,而不必在“网关”服务中重复所有服务器方法,即我宁愿不要“链接”两个请求,而是以某种方式只重定向1个请求。
不确定是否可能,但认为有人可能会证明我错了?我使用Delphi XE2和DataSnap服务器是Windows服务。
2个回答

2

我看到这里有两个选择:

  • 只使用第一个服务器,在登录后返回真实服务器的地址

或者

  • 在Datasnap服务器前使用Apache或NGINX反向代理,并基于身份验证数据进行RewriteRules操作(然而,今天我的Google搜索已经用尽,也许可以将其放置在HTTP / Apache规范问题上)

2
+1。谢谢;这正是我想到的基于HTTP的解决方案。 - Jeroen Wiert Pluimers

0

简短版:解决方案将取决于您知道在哪个级别(HTTP、DataSnap或中间)定位请求。

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

  • 最纯粹的方法是编写一个通用的 DataSnap 网关,可以查询 DataSnap 目标服务器,动态创建代理服务器和客户端,然后拦截流量并决定将请求交给哪个 DataSnap 目标服务器。
  • 更实际的方法是您所担心的方法。

另一种方法是在 HTTP 级别上进行。只有在 HTTP 级别上确定应将请求交给哪个目标服务器时,才能使用该方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接