PHP curl получает куки с нескольких доменов - PullRequest
2 голосов
/ 04 ноября 2010

Я установил куки на main.com, но мне нужно получить эти куки с другого моего домена domain2.com, как это сделать с помощью curl или другими способами?

Это мой код в domain2.com/get.php:

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, 'http://main.com');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($curl, CURLOPT_HEADER, true);  
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 

$data = curl_exec($curl);
curl_close($curl);

preg_match_all('#Set-Cookie: (.*);#U', $data, $matches);   
$cookies = implode(';', $matches[1]);

echo $cookies;

Возможно ли это?

1 Ответ

1 голос
/ 04 ноября 2010

Это невозможно из-за Одинаковой политики происхождения . Браузер никогда не будет отправлять файлы cookie main.com на domain2.com, а cURL будет действовать как новый клиент HTTP, посещающий main.com; он получит новые куки, но они не будут иметь никакого отношения к вашему посетителю.

Чтобы иметь междоменный сеанс, вам нужно посетить один сервер, чтобы установить сеанс на обоих. Например. когда пользователь посещает main.com, вывод HTML содержит пустое изображение до http://domain2.com/setCookie?sess=<main_session_Id>. Сценарий на domain2.com установит cookie-файл сеанса, в результате клиент получит идентичный cookie-файл в обоих доменах. Затем домены могут использовать внутренние запросы, если не на одном компьютере, для обмена информацией.

Междоменное управление сессиями имеет тенденцию быть запутанным и чревато предостережениями. Ищите проверенное решение, а не придумывайте свое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...