http://www.perlmonks.org?node_id=541094


in reply to Apache2::Cookie troubles... sanity check needed on auth/sess handling

A quick grok of your code suggests that the problem is here :

Apache2::Cookie->new ( $r, -name => 'user_login', -value => { user_id => $ARGS{username}, MAC => $MAC }, -path => '/', -domain => 'ruth.dobson.net', -expires => '+1M', )->bake($r); $url= "/test.html"; $m->redirect($url);

Calling cookie->bake puts your cookie headers the response headers, but then you request a redirect, which is not a 200 response, and so the standard page headers do not get sent.

Instead of using bake, you need to set your err_headers_out, which will get sent regardless of the response code.

See here for a recipe : Sending Cookies in REDIRECT Response handlers

  • Comment on Re: Apache2::Cookie troubles... sanity check needed on auth/sess handling
  • Download Code

Replies are listed 'Best First'.
Re^2: Apache2::Cookie troubles... sanity check needed on auth/sess handling
by jimbus (Friar) on Apr 04, 2006 at 17:59 UTC

    Based on the recipe, I updated the following to the login page

    if ($res->{res}) { my $MAC = Digest::SHA1::sha1_hex($ARGS{username}, "Get the S1gnal!") +; my $cookie = Apache2::Cookie->new ( $r, -name => 'user_login', -value => { user_id => $ARGS{username}, MAC => $MAC }, -path => '/', -domain => 'ruth.dobson.net', -expires => '+1M', ); $r->err_headers_out->add('Set-Cookie' => $cookie); }

    It didn't change any thing. is there any way to, if I stop before the redirect, to check and see what whas set or check someplace to see what is happening when I submit the cookie? I'm not sure how to go about debugging this.


    --Jimbus aka Jim Babcock
    Wireless Data Engineer and Geek Wannabe
    jim-dot-babcock-at-usa-dot-com
      $r->err_headers_out->add('Set-Cookie' => $cookie->as_string);
      To debug cookie problems, use a browser that shows the headers (lwp-request, Firefox with LiveHTTPHeaders, a logging proxy).