Benjamin: HTTP::Request mit Cookies

Hallo,

habe folgendes Problem:

Also ich möchte per http::Request eine Seite laden. Die Seite erfordert jedoch eine Authentifizierung. Bei der Authentifizierung wird ein Cookie geschrieben! Also dachte ich mir einfach den Cookie zu erstellen und diesen mit zusenden! das Problem ist jedoch das der Cookie irgendwie nicht mitgesendet wird! also meine frage ist geht das überhaupt so? und wenn ja wie! habe schon im netz mehrer Seiten durchsucht! doch alle Versuche waren erfolglos! Ich denke irgendwie das der cookie die ganze zeit nicht versendet wird!

anbei poste ich mal meinen bisherigen code!

my $ua = LWP::UserAgent->new;

$ua->cookie_jar(HTTP::Cookies->new(-NAME => "xxx",
-VALUE => $Sessionkey));

my $request = HTTP::Request->new(GET => $url);
my $response = $ua->request($request);

my $content = $response->content();

Vielen Dank schon mal im vorraus!

MFG Benjamin

  1. Hallo,

    habe folgendes Problem:

    Also ich möchte per http::Request eine Seite laden. Die Seite erfordert jedoch eine Authentifizierung. Bei der Authentifizierung wird ein Cookie geschrieben! Also dachte ich mir einfach den Cookie zu erstellen und diesen mit zusenden! das Problem ist jedoch das der Cookie irgendwie nicht mitgesendet wird!

    Mhmmm, woran das wohl liegt?
    Es könnte vielleicht sein, dass Cookies nur geschrieben und auf dem Client gespeichert werden. Vielleicht erwarten Server ja keine Zusendung, vielleicht suchen sie nur auf dem Client nach vorhandenen Cookies ...
    Vielleicht gehst du einfach nur dem falschen Ansatz nach :)

  2. hi,

    Cookie senden:
    #!/usr/bin/perl

    use strict;
    use LWP::UserAgent;
    my $ua = LWP::UserAgent->new();
    use HTTP::Cookies;

    my $file = 'c:/tmp/keks.txt';
    my $cookie = HTTP::Cookies->new(file => $file);
    $ua->cookie_jar($cookie);

    $cookie->load($file);
    $ua->cookie_jar($cookie);

    my $request = HTTP::Request->new('GET', 'http://example.com');
    $cookie->add_cookie_header($request);

    my $response = $ua->request($request);
    print $response->as_string;

    Jo, was in keks.txt stehen muss, könnte so aussehen:
    #LWP-Cookies-1.0
    Set-Cookie3: keks=rolfs_cookie; path="/cgi-bin/"; domain="example.com"; path_spec; expires="2003-11-04 13:51:35Z"; version=0

    D.h., diesen Cookie als text bekommst Du, wenn Du einen Request mit LWP gemacht hat, abspeichern so:

    #!/usr/bin/perl

    use strict;
    use LWP::UserAgent;
    my $ua = LWP::UserAgent->new();
    use HTTP::Request::Common qw(GET POST);
    use HTTP::Cookies;

    my $file = 'c:/tmp/keks.txt';
    my $cookie = HTTP::Cookies->new();
    $ua->cookie_jar($cookie);

    my $request = POST 'http://example.com/cgi-bin/keks.cgi', [ text => 'rolfs_cookie' ];
    my $response = $ua->request($request);

    print $response->as_string;

    $cookie->extract_cookies($response);
    $cookie->save($file);

    Viel Spass, beim testen ;-)

    roro

    1. hi,

      Cookie senden:
      #!/usr/bin/perl

      use strict;
      use LWP::UserAgent;
      my $ua = LWP::UserAgent->new();
      use HTTP::Cookies;

      my $file = 'c:/tmp/keks.txt';
      my $cookie = HTTP::Cookies->new(file => $file);
      $ua->cookie_jar($cookie);

      $cookie->load($file);
      $ua->cookie_jar($cookie);

      my $request = HTTP::Request->new('GET', 'http://example.com');
      $cookie->add_cookie_header($request);

      my $response = $ua->request($request);
      print $response->as_string;

      Jo, was in keks.txt stehen muss, könnte so aussehen:
      #LWP-Cookies-1.0
      Set-Cookie3: keks=rolfs_cookie; path="/cgi-bin/"; domain="example.com"; path_spec; expires="2003-11-04 13:51:35Z"; version=0

      Habe diese Variante nun ausprobiert jedoch erfolglos!!!
      Die Seite sagt mir immer noch das ich nicht berechtigt bin darauf zu zu greifen.

      In der Keks.txt steht nun folgendes:

      #LWP-Cookies-1.0
      Set-Cookie3: NAME=xxx; VALUE=32323232323;

  3. gudn tach!

    Also ich möchte per http::Request eine Seite laden. Die Seite erfordert jedoch eine Authentifizierung. Bei der Authentifizierung wird ein Cookie geschrieben!

    bin letztens auf WWW::Mechanize hingewiesen worden. das hat automatische cookie-behandlung on board; koennte dir auch helfen.

    prost
    seth