• 技术文章 >后端开发 >php教程

    当post的请求需要301或者302这么携带post的数据呢

    2016-08-31 08:54:52原创1500

    问题:因为我是已有程序迁移到slim框架上,所以,真对以前的动态地址做了withRedirect,代码如下:

    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 
         **/
        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
    

    而很多一些异步请求为post,301到新的地址后,直接丢失了post的数据,如图:

    我记得重定向是可以携带post数据的,但是在slim中,这么从Response设置呢?请教!
    感谢?!

    回复内容:

    问题:因为我是已有程序迁移到slim框架上,所以,真对以前的动态地址做了withRedirect,代码如下:

    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 
         **/
        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
    

    而很多一些异步请求为post,301到新的地址后,直接丢失了post的数据,如图:

    我记得重定向是可以携带post数据的,但是在slim中,这么从Response设置呢?请教!
    感谢?!

    没看明白,但是30X代表的应该就是服务器重定向吧,这个状态码是服务器response回来的应该是无疑的。php可以通过header函数来设置。

    首先这些参数应该在301之前处理还是之后处理,好的设计应该是在301之前处理,处理完之后做个重定向,展示相关的结果页面,只带上必要的查询参数,这时不应该再去取POST参数了,而是直接根据查询参数展示结果。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:slim php
    上一篇:关于php引用的问题 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 手写PHP API框架(二)之Composer的安装使用• 手写PHP API框架(三)之反射介绍• 手写PHP API框架(一)之PSR规范• 聊聊php怎么让Swoole/Pool进程池实现Redis持久连接• 一文解析PHP元转分的错误示范(附代码实例)
    1/1

    PHP中文网