Вы можете настроить запросы, созданные и переданные клиентом, используя опции запроса. Они управляют различными аспектами запроса, включая заголовки, параметры строки запроса, параметры тайм-аута, тело запроса и многое другое.
Все следующие примеры используют следующий клиент:
$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, т.д...
Свежие комментарии