У меня есть сайт, использующий единый вход, и поэтому он проходит через некоторые перенаправления для пользователей, которые не предоставляют надлежащие файлы cookie, чтобы они могли проходить проверку подлинности и т. Д. Я могу успешно пройти проверку подлинности, выполнять перенаправления и т. Д. СЗавиток, используя следующие настройки:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if (!($data == "")) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
if (!($debug == false)) {
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
}
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . "/../../../storage/cookie_jar.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . "/../../../storage/cookie_jar.txt");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . $auth));
$result = curl_exec($ch);
$info = curl_getinfo($ch);
$response = array('http_code' => $info['http_code'], 'debug' => $info, 'data' => $result);
Это успешно выполняется, и я получаю 200 и правильный ответ.Используя Guzzle, я получаю 401.
$cookieFile = __DIR__ . '/../../../storage/cookie_jar.txt';
$cookieJar = new FileCookieJar($cookieFile, true);
$client = new Client(['http_errors' => false, 'verify' => false, 'allow_redirects' =>
['max' => 10, 'track_redirects' => true], 'cookies' => $cookieJar
]);
$res = $client->request('GET', 'https://somesite.com', [
'auth' => ['user', 'password']
]);
$response = array('http_code' => $res->getStatusCode(), 'data' => json_decode($res->getBody()->getContents(), true));
TIA!