feedpp и идентификатор сессии - PullRequest
0 голосов
/ 28 декабря 2011

мы используем Perl и cpan Modul FeedPP для разбора RSS-каналов. Скрипт Perl запускается через различные элементы RSS-каналов и сохраняет ссылку на базу данных, например его:

my $response = $ua->get($url);

if ($response->is_success) {
        my $feed = XML::FeedPP->new( $response->content, -type => 'string' );
                foreach my $item ( $feed->get_item() ) {
                        my $link = $item->link();
                        [...]

$url содержит URL-адрес RSS-канала, например http://my.domain/RSS/feeds.xml

в этом случае $item->link() будет содержать ссылки на статью RSS, например http://my.domain/topic/myarticle.html

Проблема в том, что некоторые веб-серверы (которые предоставляют RSS-каналы) делают HTTP-ссылку для добавления идентификатора сеанса к URL-адресу, например: http://my.domain/RSS/feeds.xml;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD.

Странно думать, что feedPP швы, чтобы добавить этот идентификатор сеанса к ссылке каждого элемента. Так что $item->link() содержит ссылки на статью RSS, например http://my.domain/topic/myarticle.html;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD

Даже если исходная ссылка не содержит идентификатора сеанса.

Есть ли способ отключить такое поведение feedPP ??

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2018

ИМХО, поведение корректное: компоненты uri, следующие за точкой с запятой, являются частью пути (параметр конфигурации для интерпретации), поэтому, когда uri используется для преобразования относительного URL в абсолютный uri, он должен быть также скопированы.

Вы ожидаете совместимого поведения с параметрами '&', но они не равны. https://rt.cpan.org/Ticket/Display.html?id=73895

0 голосов
/ 09 января 2012

Я просмотрел http://metacpan.org/pod/XML::FeedPP, но не нашел способа повернуть, чтобы метод link () обрезал эти идентификаторы сессии.(Я использую XML :: FeedPP в одном из моих сценариев, и сайт, который я обрабатываю, не использует идентификаторы сессии.)

Так что я думаю, что ответ - нет, в настоящее время нет.Вы можете попробовать связаться с автором или сообщить об ошибке.

...