【问题标题】:What is the best way to redirect network requests?重定向网络请求的最佳方法是什么?
【发布时间】:2014-12-31 04:30:16
【问题描述】:

我已经编写了自己的 HTTP 服务器,但考虑到某些标准,我想将向我的服务器发出的一些请求重定向到在同一台机器上运行的另一台服务器。例如,我可能希望将所有请求重定向到“/foo/*”,以由我也正在运行的 apache 服务器处理。最好的方法是什么?

我能想到的唯一方法是在不同的端口上运行 apache,然后使用相同的请求从我的服务器向 localhost:1234 发出全新的网络请求(假设 apache 在端口 1234 上运行)标头和正文,然后获取响应并让我的服务器将其发送回客户端。

不过,这似乎是一种笨拙、迂回的方式来实现这一点,我相信这是每个​​主要网站都在解决的问题。是否有某种我从未听说过的技术或协议可以做到这一点?

非常感谢!

编辑:为了清楚起见,客户端应该只为所有这些发出一个网络请求,而不是让我的服务器返回 3xx 响应

【问题讨论】:

    标签: http redirect networking network-programming


    【解决方案1】:

    HTTP 通过 TCP 运行。 Apache 服务器不能只将所需的响应发送给没有请求的客户端。客户端已向您的 HTTP 服务器请求数据,因此它必须是发送响应的服务器。客户端可能位于防火墙后面,因此,Apache 服务器甚至无法与其建立 TCP 连接(传入连接通常被阻止)。

    如果您的服务器接收客户端请求,将其转发到 Apache 服务器,从 Apache 服务器获取响应并将其转发给客户端,则它充当代理服务器(中间人)。这不会是重定向。

    唯一明智的做法是让客户端发出两个网络请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-27
      • 2010-10-12
      • 1970-01-01
      • 2021-04-16
      • 2012-03-03
      • 2012-01-08
      • 1970-01-01
      • 2013-10-13
      相关资源
      最近更新 更多