>  기사  >  백엔드 개발  >  게시물 요청에 게시물 데이터를 전달하기 위해 301 또는 302가 필요한 경우는 무엇입니까?

게시물 요청에 게시물 데이터를 전달하기 위해 301 또는 302가 필요한 경우는 무엇입니까?

WBOY
WBOY원래의
2016-08-31 08:54:521983검색

질문: 이미 프로그램을 슬림 프레임워크로 마이그레이션했기 때문에 실제로 이전 동적 주소에 Redirect를 수행했습니다.

<code class="php"><?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
</code>

그리고 많은 비동기 요청이 게시되고 나면 그림과 같이 301이 새 주소로 전송된 후 게시물 데이터가 직접 손실됩니다.
게시물 요청에 게시물 데이터를 전달하기 위해 301 또는 302가 필요한 경우는 무엇입니까?

게시물 요청에 게시물 데이터를 전달하기 위해 301 또는 302가 필요한 경우는 무엇입니까?

리디렉션이 게시물 데이터를 전달할 수 있다는 것을 기억하지만, 슬림하게는 Response에서 설정하는 것은 어떨까요? 찾다!
고마워요?!

답글 내용:

질문: 이미 프로그램을 슬림 프레임워크로 마이그레이션했기 때문에 실제로 이전 동적 주소에 Redirect를 수행했습니다.

<code class="php"><?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
</code>

그리고 많은 비동기 요청이 게시되고 나면 그림과 같이 301이 새 주소로 전송된 후 게시물 데이터가 직접 손실됩니다.
게시물 요청에 게시물 데이터를 전달하기 위해 301 또는 302가 필요한 경우는 무엇입니까?

게시물 요청에 게시물 데이터를 전달하기 위해 301 또는 302가 필요한 경우는 무엇입니까?

리디렉션이 게시물 데이터를 전달할 수 있다는 것을 기억하지만, 슬림하게는 Response에서 설정하는 것은 어떨까요? 찾다!
고마워요?!

이해가 안 되지만 30X는 서버 리디렉션을 나타내야 합니다. 이 상태 코드가 서버 응답에서 온 것이라는 점에는 의심의 여지가 없습니다. PHP는 헤더 함수를 통해 설정할 수 있습니다.

먼저 이러한 매개변수를 301 이전에 처리해야 할까요? 아니면 301 이전에 처리해야 할까요? 이때는 필요한 쿼리 매개변수만 사용하여 리디렉션하고 관련 결과 페이지를 표시합니다. , 아니요 더 이상 POST 매개변수를 가져오지 않고 쿼리 매개변수를 기반으로 직접 결과를 표시해야 합니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.