Автор Тема: Проблема с LWP + Cookie  (Прочитано 3219 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sd1074

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проблема с LWP + Cookie
« : 07 Июля 2008, 11:54:44 »
Здравствуйте! Проблема такая. Мне нужно получить страницу с 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").

При этом, в браузере куки выводится всегда, как и должно быть.

Как это так??!! Я что-то вообще голову сломал уже =\\ Заранее спасибо.

Оффлайн sd1074

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 40
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Проблема с LWP + Cookie
« Ответ #1 : 07 Июля 2008, 15:15:29 »
Проблема решена. Когда выполняется редирект, то кукис второй раз не отсылается. Один из вариантов решения:

$ua->default_headers->push_header(\'Cookie\' => \'id=12345\');

то есть по умолчанию для каждого запроса от $ua в заголовке будет передаваться данный кукис.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28