Wyobraź sobie następujący scenariusz: Otwieram połączenie CURL i przekazuję trochę XML-Logindata przez POST. Serwer odpowiada za pomocą przekierowania 302, w którym ustawione są pliki cookie sesji i przekierowuje mnie na następującą stronę "witamy". Jeśli włączę FOLLOWLOCATION, pliki cookie ustawione na stronie przekierowania zostaną utracone, a strona powitalna zakończy się niepowodzeniem z komunikatem "session expired". Jeśli wyłączę funkcję FOLLOWLOCATION, nie przekierowuję (oczywiście) i otrzymuję stronę HTML z "przeniesieniem strony do innej lokalizacji" z linkiem, który prowadzi mnie do strony powitalnej. Działa to tak, jak pliki cookie są ustawione, ale muszę postępować zgodnie z przekierowaniem i przejść bezpośrednio do strony powitalnej.Jak przekazywać pliki cookie w przekierowaniu CURL?
Więc jak mogę utrzymać ciasteczka tak, że są one prawidłowo ustawione?
To jest mój kod do tej pory:
$ch = curl_init('https://www.example.com/login');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, '<some xml data>');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml; charset=UTF-8"));
curl_exec($ch);
curl_close($ch)
Dzięki za wszelką pomoc! ;
Więc po prostu być jasne, jesteś już ustawienie CURLOPT_FOLLOWLOCATION? – bhollis
W prawo - ręcznie sprawdzam, czy jest to przekierowanie, czy nie. – acme