in reply to (podmaster) Re: LWP and HTML 302 Error
in thread LWP and HTML 302 Error

I know I can log in fine because I can return $b, which was set as $r->as_string, and do so from a browser running the script, so I get the page that shows up when I am logged in.

What can add_cookie_header($request) or extract_cookies($response) do for me? I have never used those. Thanks for your help and time!

Replies are listed 'Best First'.
Re: login just fine
by PodMaster (Abbot) on May 21, 2002 at 20:27 UTC
    add_cookie_header($request) and extract_cookie($response) store and extract a cookie from your cookie jar.

    The autosave option only saves the cookie file during destruction.

    You can see the page, because you send the username/password.

    The reason you're having problems the 2nd time, is because when you login, you're issued a cookie, which you simply discard.

    Since you login via Login.cfm, and your 2nd request is to Page.cfm, you must send the cookie you were given by Login.cfm.

    That's how cookie based authentication works. You send your credentials, and get issued a cookie, which you use as credentials istead.

    Now please go read the HTTP::Cookies documentation like I suggested (you could've saved yourself a day or two)

    update:
    I was reviewing some of my nodes, and then I noticed $ua->cookie_jar ( you know, it would've be nice if somebody pointed this out to me). Turning to the documentation would've still been helpfull though (you'd have known the following, and could've dismissed my comments quickly ;)

    $ua->cookie_jar([$cookies]) Get/set the HTTP::Cookies object to use. The default is to have no cookie_jar, i.e. never automatically add ``Cookie'' headers to the requests.

     

    Look ma', I'm on CPAN.


    ** The Third rule of perl club is a statement of fact: pod is sexy.
      I read the docs now, let me see if I got this straight (going to have to try it tonight when I'm not at work). I need to save the file with $cookie_jar->save( $file ); and then load the file with $cookie_jar->load( $file );.
      Then loading that will allow me to do my 2nd post? Thanks for the help.

      Michael Jensen
      InShift Technologies
      http://www.inshift.com
      michael@inshift.com
        No. Since you do both requests in the same program, the $cookie_jar is stored in memory, so you don't have to save it to a file or load it from a file. You just need to put a cookie in it (extract_cookies), and then put a cookie from the jar in your request (add_cookie_header).

        See

        $cookie_jar->add_cookie_header($request); The add_cookie_header() method will set the appropriate Cookie:-header for the *HTTP::Request* object given as argument. + The $request must have a valid url attribute before this method is called. $cookie_jar->extract_cookies($response); The extract_cookies() method will look for Set-Cookie: and Set-Cookie2: headers in the *HTTP::Response* object passed as argument. Any of these headers that are found are used to update + the state of the $cookie_jar.

        update:
        I was reviewing some of my nodes, and then I noticed $ua->cookie_jar ( you know, it would've be nice if somebody pointed this out to me). Turning to the documentation would've still been helpfull though (you'd have known the following, and could've dismissed my comments quickly ;)

        $ua->cookie_jar([$cookies]) Get/set the HTTP::Cookies object to use. The default is to have no cookie_jar, i.e. never automatically add ``Cookie'' headers to the requests.

         

        Look ma', I'm on CPAN.


        ** The Third rule of perl club is a statement of fact: pod is sexy.