所以,我将在以下位置接收 API 调用:
POST http://olddomain.com/api/call
Post contents in Raw Body
我需要将其重定向到
POST http:://newdomain.com/api/call
具有相同的 Raw Body 内容。似乎没有办法重定向 POST 服务器端,唯一的方法是生成 HTML 表单并通过 JS 提交该表单。因此,考虑到这一点,我什至不确定我们的 API 客户端是否有可能期望 JSON 返回给他们以呈现并提交该 HTML/JS 以重定向 POST。
所以现在我想我可能只需要将 POST 原始正文内容转换为查询字符串变量——调用中的数据量可能足够低,我们可以摆脱这个——然后也许更新在这种情况下接受 GET 参数的 API 调用处理程序。
这些看起来一点都不干净。请告诉我有更好的方法。
更新:实现需要 curl
兼容性,因为 API 客户端使用它。
最佳答案
要从 PHP 重定向一个常规页面,您可以运行如下命令:
header("Location: http://newdomain.com/api/call");
exit;
但我不确定大多数客户端是否会自动传递相同的 POST 数据(根据上面的 Jay 的说法,这不会携带 POST 数据)。无论如何,这是假设客户端本地处理 HTTP 重定向,如果客户端在其他人的机器上运行,出于安全原因您不能依赖它。例如,PHP 的 open_basedir
设置将不允许 curl
遵循 HTTP 重定向。
因此,您不能指望客户端为您 执行重定向。您将不得不成为中间人,并在内部对 newdomain.com 进行新调用,然后将响应传递回客户端。这可能不是一个理想的解决方案,但是当您托管 API 时,您必须谨慎对待您假设客户可以或将会做什么。
关于json - 需要将 POST 重定向到对另一个域的 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11888506/