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]
>

Reply via email to