使用 Slim 3 重定向 POST 请求

Redirect POST Requests with Slim 3

我在 PHP 中有一个 API 门,带有 Slim 3 Framework (server1) 和一个 Web 服务服务器 (server2) access/edit 数据。

我处理用户身份验证并在 server1 中定义我的身份验证路由。服务器 1 和服务器 2 之间的对话使用令牌。

我想使用我的服务器 1 将 GET/POST 请求转发到我的服务器 2。最好的方法是什么?

在我的 server1 上使用 Slim,我可以使用 withRedirect 方法,但我不能让它与 POST 请求一起工作:

$app->post('/api/resource', function ($request, $response, $args) {
   return $response->withRedirect("http://server2/api/resource?additionla_parameter=value");
});

也许我应该使用 Guzzle 或代理之类的应用程序?

我个人会走 Guzzle 路线,意思是只在服务器端创建一个客户端来与 server2 通信,但实际上有一个用于此目的的 HTTP 307 响应代码。它声明客户端在重定向期间不应更改方法(在您的情况下为 POST)。这是一个不错的总结:https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect/99966#99966

我刚刚浏览了 slim 源,该方法接受状态代码的第二个参数,未设置时默认为 302。参见 https://github.com/slimphp/Slim/blob/3.x/Slim/Http/Response.php#L289。所以试试这个:

$response->withRedirect("http://postplease", 307);

可能有用