Slim3将GET请求重定向为POST请求

时间:2019-12-03 08:18:39

标签: php slim

刚开始学习Slim3。已经花了一些时间来弄清楚如何执行覆盖原始请求类型的重定向,但没有成功。

我希望/origin路由执行到/dest路由的重定向。 /origin路由收到GET请求执行验证,并在成功后将POST请求重定向到/dest uri路由。这是屏幕截图。我想我在这里做些愚蠢的事情:

$app->get('/origin', function($req,$res,$args)
{
    $req= $req->withHeader('X-Http-Method-Override','POST');
    return $res->withRedirect('/dest');
});

$app->post('/dest', function($req,$res,$args)
{
    echo "this is destination page";
});

1 个答案:

答案 0 :(得分:0)

如评论中所述,这是不可能的,因为浏览器发出的请求不在您的控制范围内。

调用->withRedirect()时,您将向HTTP客户端(通常是Web浏览器)发送状态代码302和头Location

Web浏览器会看到302状态代码,然后向Location标头中的URL发出新请求。服务器无法控制此请求,每个Web浏览器都会发出一个GET请求。

现在,如果您要将POST请求重定向到另一个URL并保持相同的POST方法,则可以将307状态代码与{{ 1}}标头,浏览器应该做正确的事。请注意,此代码不允许您将Location更改为GET-它只保留与原始请求有关的后续重定向请求相同的方法。

相关问题