首页 > 解决方案 > 如何使用服务器 IP 而不是用户 IP 将用户重定向到 API 端点(不同的域)?

问题描述

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

我努力了:

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

这是他们关于如何用 VB 语言重定向的文档:VB 中的 重定向代码

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

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

提前致谢。

额外的上下文/信息

第四次调用的示例截图,包括获取报价单和生成 url 参数

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

如果您从屏幕截图中看到,System.Diagnostics.Process.Start 将在生成报价编号 (QuoNo) 后执行 url。因此,一旦用户单击我们端 (mydomain.com/form) 上的“立即购买”按钮,它将调用第四次调用 (GetQuotation guzzle 函数) 并生成一个报价编号 (QuoNo),然后它将填充到http: //otherdomain.com/main.a5w?tokenid=wm-9Kj-14e-Fa4-I1adlXrQ00weqwe3S&QuoNo=QUO022348921312301623 . 根据我对 VB 代码的理解,System.Diagnostics.Process.Start 将强制打开 url。

如果它仍然缺乏给出的信息,我很抱歉。随时问更多。谢谢

标签: phplaravelsoapguzzlehttp-redirect

解决方案


可悲的是你想要的无法实现。重定向唯一能做的就是告诉浏览器去哪里,你无法控制这里的 IP,因为这会带来关于安全和识别的各种问题。实现您想要的唯一方法是将生成的网页的 html 包装在您的网站中或删除 ip 地址的限制。另一种解决方案可能是构建一个所有人都可以访问的简单页面,并将 API 路由限制为特定的 IP 地址。例如:

假设支付网关位于: example.com/checkout,每个人都可以访问这个网关,并且包含一个表单,您可以执行重定向并使用传递的数据填写此表单。

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

如果不是这种情况,则只能通过 guzzle 将数据发布到端点并使用这些返回值向用户提供反馈。

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


推荐阅读