【问题标题】:Is there a way to change an http request, response location?有没有办法改变一个http请求,响应位置?
【发布时间】:2015-03-12 14:49:09
【问题描述】:

我正在调用 api,但我需要更改响应的位置...通常,响应将直接发送回进行调用的客户端,但我需要一种方法来发送它其他地方的回应。

这甚至可能吗?有解决办法吗? 服务端是paypal或者facebook之类的api,客户端不在同一个位置。

谢谢!

【问题讨论】:

  • 我不是网络开发人员,但我很确定答案是否定的。客户端打开一个流到服务器并在该流上响应服务器。在您的场景中,服务器应该向客户端打开一个新流并发送答案:这意味着客户端成为服务器:)。
  • 澄清一下,“客户端”是我的服务器,而不是浏览器实例。
  • 您的客户端发出网络请求。所以从套接字的角度来看它是一个客户端。
  • 我相信这正是 IP 欺骗的工作方式。基本上,您正在修改您的 IP 层,迫使服务器将回复发送给另一个客户端。这样做的缺点是请求客户端永远不会收到响应,因此不知道请求是否成功。
  • @icecub IP 欺骗不会发生在 http 协议层。

标签: javascript php api post get


【解决方案1】:

它不会工作(很容易)。

http 协议说,逻辑客户端通过提交请求并(希望)接收响应来启动信息交换。虽然服务器向客户端 B(“我的服务器 2”)提供由客户端 A(“我的服务器 1”)的请求触发的数据的响应在技术上是可行的,但我认为这是公然的侵犯隐私和严重的安全漏洞。请注意,它仍然假定所涉及的两个客户端都提交了活动间隔重叠的请求。

这不排除通过其他方式(例如 Web Sockets)通知客户端 B 的可能性。

但是,您仍然需要逻辑客户端 B(“我的服务器 2”)的配合。所以问题是您是否更好地对应用程序进行不同的建模,让“服务器”和“我的服务器 1”交换它们的逻辑角色:

  • “我的服务器 2”向“服务器”请求一些信息,最终需要“我的服务器 1”提供。
  • “服务器”通过向“我的服务器 1”提交请求来处理此请求
  • 此请求的结果将被转发到“myserver 2”。

注意'server'和'my server 1'之间的通信不需要使用http。

【讨论】:

  • 即使在同一个域下,只是位置不同,是否仍然可以?我可以想象您可以在您的域下处理动态 ip 以将其发送到不同的服务器 ip...您可以想象一家公司有多个服务器为同一个域提供服务。从某种意义上说,它会获取响应 url 并将其发送到另一个服务器 ip。
  • @BrianSmith Http 通信使用由客户端发起的“http 连接”。即使应用场景从隐私/安全的角度来看是合法的,我仍然认为信息流会非常不稳定并且会产生高延迟。
  • 据我了解,在服务器负载均衡器上,您可以从一台服务器发送请求,您可能会在另一台服务器上得到响应。负载平衡在某处处理并相应地重定向响应。所以我认为这是可能的。
  • @BrianSmith 负载均衡器在概念上是一个代理,它选择一个空闲的服务器来处理 http 请求。因此负载平衡发生在请求处理之前。你想要的信息流是可实现的;但是,我的印象是您要求内置 http 机制,但我认为没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多