Table of Contents
Home
Backend Development
PHP Tutorial
When a post request requires 301 or 302 to carry the post data?



When a post request requires 301 or 302 to carry the post data?
php
slim
Question: Because I have already migrated the program to the slim framework, I really did withRedirect on the previous dynamic address. The code is as follows:
<?php namespace Ts\Middleware; use Psr\Http\Message\RequestInterface as Request; use Psr\Http\Message\ResponseInterface as Response; use Interop\Container\ContainerInterface; /** * 兼容的地址,将原有的动态地址转化为伪静态地址 * * @package default * @author **/ class CompatibleURL { protected $ci; public function __construct(ContainerInterface $ci) { $this->ci = $ci; } /** * Compatible URL middleware invokable class. * * @param \Psr\Http\Message\RequestInterface $request PSR7 request * @param \Psr\Http\Message\ResponseInterface $response PSR7 response * @param callable $next Next middleware * @return \Psr\Http\Message\ResponseInterface * @author Seven Du <lovevipdsw@outlook.com> **/ public function __invoke(Request $request, Response $response, callable $next) { $app = $request->getQueryParam('app'); $mod = $request->getQueryParam('mod'); $act = $request->getQueryParam('act'); $param = []; if ($app !== null) { $param['app'] = $app; } if ($mod !== null) { $param['controller'] = $mod; } if ($act !== null) { $param['action'] = $act; } $router = $this->ci->get('router'); $queryParam = $request->getQueryParams(); unset($queryParam['app'], $queryParam['mod'], $queryParam['act']); $uri = $router->pathFor('apps', $param, $queryParam); if ($uri != $router->pathFor('apps', [], $queryParam)) { // permanently redirect paths with a trailing slash // to their non-trailing counterpart return $response->withRedirect((string) $uri, 301); } return $next($request, $response); } } // END class CompatibleURL
Copy after login
Copy after login
And many asynchronous requests are post. After 301 is sent to the new address, the post data is directly lost, as shown in the picture:
I remember that redirection can carry post data, but in slim, what about setting it from Response? consult!
Thank you?!