Guzzle 6 следит за перенаправлениями на локальном докере, но не на рабочем сервере - PullRequest
1 голос
/ 08 мая 2019

Я использую Guzzle 6 Http Client для очистки веб-страниц и анализа их с точки зрения SEO, однако интересно то, что Guzzle вообще не отслеживает перенаправления при использовании в производстве, но код точно такой же. Вот фрагмент кода, который я использую для запроса страницы и отслеживания перенаправлений.

    $onRedirect = function (RequestInterface $request, ResponseInterface $response, UriInterface $uri): void {
        $this->totalRedirects++;
    };

    $response = $this->httpClient->request('GET', $url, [
        'allow_redirects' => [
            'max'             => self::MAX_REDIRECTS,
            'referer'         => true,
            'track_redirects' => true,
            'on_redirect'     => $onRedirect
        ],
        'headers' => [
            'User-Agent' => self::USER_AGENT
        ],
        'http_errors' => true
    ]);

    $redirectUrls = $response->getHeader('X-Guzzle-Redirect-History');
    $redirectStatuses = $response->getHeader('X-Guzzle-Redirect-Status-History');
    foreach ($redirectUrls as $key => $redirectUrl) {
        $this->responses[] = new HttpResponse($redirectUrl, $redirectStatuses[$key]);
    }
    //Save last successful response
    $this->responses[] = new HttpResponse($url, $response->getStatusCode());

Мое промежуточное ПО для перенаправления вообще не запускается, используя его в работе и возвращает только «307», в то время как в докере я получаю «307» и «200». Это было проверено на странице самаритян - (https://www.samaritans.org/)

В Production и Docker используется PHP 7.2 и Guzzle 6

...