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