如何使用服务器IP而不是用户IP将用户重定向到API端点(不同的域)?

时间:2018-11-14 11:24:01

标签: php laravel soap guzzle http-redirect

我正在使用Laravel&Guzzle向外部API发出请求。所有其他调用均已成功获得实际响应,但是将用户重定向到外部页面的操作失败,因为外部API Web服务仅允许我的服务器IP访问该页面。

我尝试过:

  1. windows.location(javascript)
  2. 位置标头(PHP)
  3. 返回重定向URL(PHP)

这是他们有关如何以VB语言重定向的文档: redirection code in VB

所有这些方法仅使用浏览器重定向,该重定向器使用的是用户IP,而不是服务器IP。

我能使用你们推荐的使用服务器IP重定向用户的任何方法吗?

谢谢。

其他上下文/信息

Example screenshot for the fourth call which include get the quotation number and generate the url parameter

这是API文档中提供的VB代码。那么,为什么要把用户带到该页面?这是因为当GetQuotation(第四次调用)已经提交到他们的数据库时,它将返回QuoNo,该QuoNo将在URL参数中使用。当用户使用参数QuoNo=12412194149124重定向到外部页面时,他们的后端将查询用户在我这一边(mydomain.com/form)填写的报价明细,并自动在他们这一边(otherdomain.com)填写/ form)。

如果从屏幕截图中看到,则一旦生成了报价编号(QuoNo),System.Diagnostics.Process.Start将执行该url。因此,一旦用户点击我们端的“立即购买”按钮(mydomain.com/form),它将调用第四个调用(GetQuotation枪口函数)并生成一个报价编号(QuoNo),然后将其填充到{{ 3}}。根据我对VB代码的理解,System.Diagnostics.Process.Start将强制打开URL。

很抱歉,如果仍然缺少相关信息。随时问更多。谢谢

1 个答案:

答案 0 :(得分:0)

您想要的东西无法实现。重定向唯一可以做的就是告诉浏览器该去哪里,您在这里无法控制IP,因为这将引起有关安全性和标识的各种问题。实现所需目标的唯一方法是将结果网页的html包装在您的网站中,或取消对IP地址的限制。另一个解决方案可能是构建一个所有人都可以访问的简单页面,并将API路由限制为特定的IP地址。例如:

我们假设付款网关位于example.com/checkout,每个人都可以访问该网关,并且其中包含一个表单,您可以执行重定向,并用传递的数据填充此表单。

此表单随后会将信息发布到example.com/api/v1/checkout,后者将处理您的表单数据并在交易成功的情况下返回。基于此返回,用户将被重定向到另一个页面。这是假设您可以控制其他域,因为只有使用服务器IP才能访问该站点。

如果不是这种情况,除了通过耗时将数据发布到端点并使用这些返回值向用户提供反馈之外,没有其他方法。

我希望这能回答您的问题,如果有任何不清楚的地方,请告诉我。