json - 需要将 POST 重定向到对另一个域的 API 调用

标签 json api http magento post

所以,我将在以下位置接收 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/

相关文章:

java - apache HttpClient,通过表单 : use StringBody instead of FileBody 上传文件

JAVA HTTP 客户端和 Serlvlet

java - 将 POJO 转换为 Map

python - JSON 提取到 pandas 数据帧

php - Laravel 5.4 Api 路线 401

php - 创建 PHP API : Checking from which server the API Request comes from

javascript - 如何禁止 postman 中的 API 执行?

java - 禁用 Tomcat 中所有默认的 HTTP 错误响应内容

android - 如何在没有 GSON 的情况下从 url 或 android 中的 restful 服务解析巨大的 JSON 数据

javascript - 如何将印度字符转换为 Unicode 转义字符