allow_redirects
摘要
描述请求的重定向行为
类型
- bool
- array
默认值
[
'max' => 5,
'strict' => false,
'referer' => true,
'protocols' => ['http', 'https'],
'track_redirects' => false
]
常量
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, 默认为5) 允许重定向次数的最大值。
- strict: (bool, 默认为false) 设置成 true 使用严格模式重定向 严格RFC模式重定向表示使用POST请求重定向POST请求 vs 大部分浏览器使用GET请求重定向POST请求。
- referer: (bool, 默认为true) 设置成 false 重定向时禁止添加Refer头信息。
- protocols: (array, 默认为[‘http’, ‘https’]) 指定允许重定向的协议。
- on_redirect: (callable) 发生重定向时调用PHP回调,包含了原始的请求以及接收到重定向的响应,on_redirect的任何返回将会被忽略。
- track_redirects: (bool) 当设置成
true
时,每个重定向的URI将会按序被跟踪头信息X-Guzzle-Redirect-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, // allow at most 10 redirects.
'strict' => true, // use "strict" RFC compliant redirects.
'referer' => true, // add a Referer header
'protocols' => ['https'], // only allow https URLs
'on_redirect' => $onRedirect,
'track_redirects' => true
]
]);
echo $res->getStatusCode();
// 200
echo $res->getHeaderLine('X-Guzzle-Redirect-History');
// http://first-redirect, http://second-redirect, etc...