Печенье жрет с перенаправлениями - PullRequest
0 голосов
/ 22 января 2019

У меня есть сайт, использующий единый вход, и поэтому он проходит через некоторые перенаправления для пользователей, которые не предоставляют надлежащие файлы 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!

...