Thanks for your help. Your confirmation led me to track down the real problem, which is that I marked the cookies secure, and forgot to do https rather than http in my browser URL. If not for your help, there's no telling how long I would've spent trying to fix a problem in my code that didn't exist.
Thanks. On Thu, Oct 9, 2008 at 10:07 AM, Torsten Foertsch <[EMAIL PROTECTED]>wrote: > On Thu 09 Oct 2008, Dan DeSmet wrote: > > I took your advice and tried switching it over to a TransHandler. > > Now, the beginning of the handler where I manipulate the cookies > > looks like this: > > > > sub handler { > > my $r = shift; > > my $cookieString = $r->headers_in->get('Cookie'); > > ... > > } > > > > I then do a check to see if the cookies exist; that tells me whether > > it's a client's first request, or a subsequent one. I then need to > > read a bunch of information out of the cookies and then rewrite one > > of them. Unfortunately, the above code always yields me an empty > > string. I can check my browser cookies and see that they've been set > > correctly. Can the TransHandler manipulate the request headers apart > > from the URI? Or am I just missing something? > > I have just checked it using the following TransHandler (directly > implemented in the httpd.conf): > > PerlTransHandler "sub { \ > my ($r)[EMAIL PROTECTED]; \ > warn qq{Got Cookie: }.$r->headers_in->{Cookie}; \ > return Apache2::Const::DECLINED; \ > }" > > Now, I call: > > curl -v http://localhost > * About to connect() to localhost port 80 (#0) > * Trying 127.0.0.1... connected > * Connected to localhost (127.0.0.1) port 80 (#0) > > GET / HTTP/1.1 > > User-Agent: curl/7.18.1 (x86_64-suse-linux-gnu) libcurl/7.18.1 > OpenSSL/0.9.8g zlib/1.2.3 libidn/1.8 > > Host: localhost > > Accept: */* > ... > > No cookie is transmitted and in the error_log appears the line: > > Got Cookie: at (eval 91) line 1. > > But if I call this: > > curl -v -b 'klaus=otto' http://localhost > * About to connect() to localhost port 80 (#0) > * Trying 127.0.0.1... connected > * Connected to localhost (127.0.0.1) port 80 (#0) > > GET / HTTP/1.1 > > User-Agent: curl/7.18.1 (x86_64-suse-linux-gnu) libcurl/7.18.1 > OpenSSL/0.9.8g zlib/1.2.3 libidn/1.8 > > Host: localhost > > Accept: */* > > Cookie: klaus=otto > ... > > You see the cookie-header? In the error_log I see: > > Got Cookie: klaus=otto at (eval 91) line 1. > > So, yes, you can manipulate request headers in the translation phase. In > fact, they are already accessible even in a PerlPostReadRequestHandler > which comes before the PerlTransHandler and is the very first occasion > when a Perl module can interfere. The main difference between > postreadrequest and translation is that the former is skipped for > subrequests and internal redirects. You can try my little handler as > PerlPostReadRequestHandler and will see the same result. > > Torsten > > -- > Need professional mod_perl support? > Just hire me: [EMAIL PROTECTED] >