Здравствуйте! Проблема такая. Мне нужно получить страницу с URL
http://mysite.ru, передав на неё Cookie вида "id=12345". Причём мне хотелось бы передать этот куки вручную.
Что я делаю:
use LWP::UserAgent;
use LWP::ConnCache;
$ua = LWP::UserAgent->new;
$cache = $ua->conn_cache(LWP::ConnCache->new( )); #просто чтобы держать соединение
$url = \'
http://mysite.ru\';
$resp = $ua->get($url,
\'Accept\' => \'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\',
\'Accept-Language\' => \'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\',
\'Accept-Encoding\' => \'gzip,deflate\',
\'Accept-Charset\' => \'windows-1251,utf-8;q=0.7,*;q=0.7\',
\'Connection\' => \'keep-alive\',
\'Keep-Alive\' => \'300\',
\'Cookie\' => \'id=12345\',
);
if ($resp->is_success) {
print $resp->content;
}
else {
print $resp->status_line, "\\n";
}
Сейчас я ещё опишу немного про настройки сервера, потом будет понятно зачем.
В корне сервера (я имею доступ к серверу) лежит .htaccess, где прописано:
RewriteEngine On
RewriteRule index.htm
http://mysite.ru/cgi-bin/index.plТо есть при обращении к
http://mysite.ru выполняется скрипт /cgi-bin/index.pl. Этот редирект (ну или точнее подмена адреса) работает нормально в браузере, да и вообще нормально работает.
Серверный скрипт /cgi-bin/index.pl имеет вид:
#!/usr/bin/perl
print "Content-Type: text/html; charset=windows-1251\\n\\n";
print "Cookie: $ENV{\'HTTP_COOKIE\'}";
То есть просто выводит значение куки.
Если, $url в приведённом выше скрипте HTTP-клиента сделать равным \'
http://mysite.ru\' (как там указано сейчас), то скрипт выводит: "Cookie: ", то есть куки нет (ну на самом деле я проверял, там в хэше окружения вообще нет ключа \'HTTP_COOKIE\'), а если изменить $url на \'
http://mysite.ru/cgi-bin/index.pl\', то всё работает (то есть выводится значение куки: "Cookie: id=12345").
При этом, в браузере куки выводится всегда, как и должно быть.
Как это так??!! Я что-то вообще голову сломал уже =\\ Заранее спасибо.