Apache si vymysli cookie?

Roman Fordinal aben na webcom.sk
Pondělí Červenec 2 20:59:30 CEST 2007


Ahoj,

To iste sa mi stavalo s QUERY_STRING ked som postavil fastcgi script na 
FCGI.pm a pouzival CGI.pm kniznicu. Riesenim bolo pouzit CGI::Fast

Jan Kasprzak wrote:
> Jan Kasprzak wrote:
> : delam nejakou vec ktera by mela pouzivat cookies pro udrzovani staovych
> : informaci.
> [...]
> : Po nekolika kliknutich nebo reloadech se ale stane, ze $jar->cookies()
> : zacne vracet, ze je nastavena cookie (i kdyz tcpdumpem jsem overil,
> : ze browser zadnou neposila ani nejde o nejake prezivsi TCP spojeni:
> : proste nove spojeni bez HTTP hlavicky Cookie: ze strany klienta,
> : a presto se v $jar->cookies() najde nejaky zaznam.
> 
> 	Testoval jsem jeste vic, a vypada to, ze kdyz tentyz potomek
> Apache drive nekomu poslal cookie, tak uz $jar->cookies() tu cookie
> obsahuje naporad i v dalsich requestech.
> 
> 	Cist cookie jsem zkousel ruznymi metodami - pres
> Apache2::Cookie::Jar->new(), dale pres fetch CGI::Cookie nebo pres
> parse CGI::Cookie($ENV{HTTP_COOKIE}). Chova se to stejne.
> 
> 	Mam PerlOptions +GlobalRequest (musim mit, nezkousel jsem jestli
> by vypnuti pomohlo), a odchozi cookie vyrabim pres
> 
>         my $cookie_out = Apache2::Cookie->new($r,
>                 -name      => $COOKIE_NAME,
>                 -value     => $session,
>                 -expires   => '+' . $COOKIE_EXPIRACE . 'd',
>                 -path      => '/',
>         );
>         $cookie_out->bake($r);
> 
> 	Vyrabet odchozi cookie jsem krome vyse uvedeneho zpusobu zkousel
> pres $r->headers_out->set('Set-Cookie' => CGI::Cookie->new(...)),
> a taky se to chova stejne.
> 
> 	Zkousel jsem Apache 2.2 i 2.0, zkousel jsem handler z PerlFixupHandler
> presunout do PerlResponseHandler, a nic z toho nepomohlo. Proste jak nejaky
> klient zpusobi ze je mu odeslana cookie, tak ten stejny potomek Apache uz
> tu cookie vidi jako prichozi i v dalsich requestech ktere zpracovava.
> 
> 	Muzu samozrejme v okamziku kdy posilam ven tu novou cookie
> udelat $r->child_terminate, ale prijde mi to jako zbabelost :-)
> 
> -Y.
> 



Další informace o konferenci Perl