Вы можете настроить запросы, созданные и переданные клиентом, используя опции запроса. Они управляют различными аспектами запроса, включая заголовки, параметры строки запроса, параметры тайм-аута, тело запроса и многое другое.
Все следующие примеры используют следующий клиент:
$client = new GuzzleHttp\Client(['base_uri' => 'http://httpbin.org']);
allow_redirects
- Summary
- Описывает поведение перенаправления запроса
- Types
-
- bool
- array
- Default
-
[ 'max' => 5, 'strict' => false, 'referer' => false, 'protocols' => ['http', 'https'], 'track_redirects' => false ]
- Constant
GuzzleHttp\RequestOptions::ALLOW_REDIRECTS
Установите false
, чтобы отключить перенаправления:
$res = $client->request('GET', '/redirect/3', ['allow_redirects' => false]); echo $res->getStatusCode(); // 302
Установите значение true
(значение по умолчанию), чтобы включить нормальные перенаправления с максимальным количеством 5 перенаправлений:
$res = $client->request('GET', '/redirect/3'); echo $res->getStatusCode(); // 200
Вы также можете передать ассоциативный массив, содержащий следующие пары ключ-значение:
- max: (int, default =
5
) максимальное количество разрешенных перенаправлений. - strict: (bool, default =
false
) установите значениеtrue
, чтобы использовать строгие перенаправления. Строгое RFC-совместимые перенаправления означают, что запросы перенаправления POST отправляются как POST-запросы, а не так, как это делает большинство браузеров — перенаправление запросов POST с GET-запросами. - referer: (bool, default =
false
). Установите значениеtrue
, чтобы разрешить добавление заголовка Referer при перенаправлении. - protocols: (array, default =
['http', 'https']
). Укажите, какие протоколы разрешены для запросов на перенаправление. - on_redirect: (callable). обработчик PHP (callback), который вызывается при обнаружении перенаправления. Вызываемый объект вызывается с исходным запросом и полученным ответом о перенаправлении. Любое возвращаемое значение из функции on_redirect игнорируется.
- track_redirects: (bool). При значении
true
каждый обнаруженный перенаправленный URI и код состояния будут отслеживаться в заголовкахX-Guzzle-Redirect-History
иX-Guzzle-Redirect-Status-History
соответственно. Все URI и коды состояния будут храниться в том порядке, в котором были обнаружены перенаправления.
При отслеживании перенаправлений заголовок
X-Guzzle-Redirect-History
будет исключать URI исходного запроса, а заголовокX-Guzzle-Redirect-Status-History
исключает окончательный код состояния.
Пример:
use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\UriInterface; $onRedirect = function( RequestInterface $request, ResponseInterface $response, UriInterface $uri ) { echo 'Redirecting! ' . $request->getUri() . ' to ' . $uri . "\n"; }; $res = $client->request('GET', '/redirect/3', [ 'allow_redirects' => [ 'max' => 10, // Позволяем максимум 10 редиректов 'strict' => true, // Используем "strict" RFC совместимые перенаправления 'referer' => true, // Добавляем заголовок Referer 'protocols' => ['https'], // Разрешаются только https URLs 'on_redirect' => $onRedirect, 'track_redirects' => true, ] ]); echo $res->getStatusCode(); // 200 echo $res->getHeaderLine('X-Guzzle-Redirect-History'); // http://первыйредирект.рф, http://второйредирект.рф, т.д... echo $res->getHeaderLine('X-Guzzle-Redirect-Status-History'); // 301, 302, т.д...
Свежие комментарии