php - 如何使用服务器 IP 而不是用户 IP 将用户重定向到 API 端点(不同的域)?
问题描述
我正在使用 Laravel & Guzzle 向外部 API 发出肥皂请求。所有其他调用均已成功获得实际响应,但将用户重定向到外部页面失败,因为外部 API Web 服务仅允许我的服务器 IP 访问该页面。
我努力了:
- windows.location (javascript)
- 位置标头 (PHP)
- 返回重定向 URL (PHP)
这是他们关于如何用 VB 语言重定向的文档:VB 中的 重定向代码
所有这些方法仅使用使用用户 IP 而不是服务器 IP 的浏览器重定向。
我可以使用你们可以推荐的使用我的服务器 IP 重定向用户的任何方法吗?
提前致谢。
额外的上下文/信息:
那是他们在 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。
如果它仍然缺乏给出的信息,我很抱歉。随时问更多。谢谢
解决方案
可悲的是你想要的无法实现。重定向唯一能做的就是告诉浏览器去哪里,你无法控制这里的 IP,因为这会带来关于安全和识别的各种问题。实现您想要的唯一方法是将生成的网页的 html 包装在您的网站中或删除 ip 地址的限制。另一种解决方案可能是构建一个所有人都可以访问的简单页面,并将 API 路由限制为特定的 IP 地址。例如:
假设支付网关位于: example.com/checkout
,每个人都可以访问这个网关,并且包含一个表单,您可以执行重定向并使用传递的数据填写此表单。
然后,此表单将发布example.com/api/v1/checkout
将处理您的表单数据的信息,并在交易成功时返回。基于此返回,用户将被重定向到另一个页面。这是假设您可以控制其他域,因为只有您的服务器 IP 才能访问此站点。
如果不是这种情况,则只能通过 guzzle 将数据发布到端点并使用这些返回值向用户提供反馈。
我希望这能回答您的问题,如果有任何不清楚的地方,请告诉我。
推荐阅读
- hive - 直线中没有 mr 作业执行信息
- reactjs - Apollo useSubscription 不适用于新窗口
- android - 将视频文件从 android 设备上传到 SpringBoot Rest API 的问题
- laravel - FFmpeg - 更改音频编解码器
- css - 收到错误 - “您可能需要适当的加载程序来处理此文件类型,当前没有配置加载程序来处理此文件”
- python - 使用 SQLALCHEMY 和 Pandas 生成 Excel
- amazon-web-services - 如何将路径参数添加到 AWS::Serverless::Function
- javascript - 在同一页面的不同部分打开链接
- wpf - 如何设置组合框的背景颜色?
- python - 如何根据多列从另一个数据框中减去一个数据框中的值?