繁体   English   中英

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

[英]Slim3 redirect GET request as POST request

刚开始学习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";
});

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM