[英]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.