Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с LWP + Cookie 
:(
    Опции темы
sd1074
Дата 7.7.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.3.2008

Репутация: нет
Всего: нет



Здравствуйте! Проблема такая. Мне нужно получить страницу с 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 $ans->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").

При этом, в браузере куки выводится всегда, как и должно быть.
Как это так??!! Я что-то вообще голову сломал уже =\ Заранее спасибо.
PM MAIL   Вверх
tolkien
Дата 7.7.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Если куки нет значит она не отправляется. Возможно она отправляется с запросом на  http://mysite.ru. Возвращается ответ с номером 300+ что нужен редирект. Выполняется второй запрос и с ним уже куки не отправляется. Проблема скорее всего ищите внутри LWP, а не в настройках сервера. Серваку побоку куки. Для него это просто заголовок. И если он есть, то попадает в окружение скрипта.
PM MAIL   Вверх
sd1074
Дата 7.7.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 11.3.2008

Репутация: нет
Всего: нет



Спасибо. Проблема решена. Вы правы, выполянется редирект и второй раз куки не отправляется.
Решение нашёл здесь на форуме:
$ua->default_headers->push_header('Cookie' => 'id=12345')
в этом случае кукис будет передаваться скаждым запросом. Работает.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0803 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.