Ztráta SESSION při druhém requestu
- ondrej256
- Člen | 187
Zdravím,
ve své aplikaci komunikuju s druhým webem (web B) následujícím způsobem:
- Ze své aplikace pošlu Request na web B
- Na webu B se do session uloží hodnota $_SESSION[‚tajnahodnota‘]
- Do své aplikace obdržím response
- Vytvořím nový Request, vložím do něj cookies z reponse (z bodu 3) a pošlu opět na web B
- Na webu B kontroluju zda existuje $_SESSION[‚tajnahodnota‘]
U bodu 5 to vždy dopadne tak, že $_SESSION[‚tajnahodnota‘] neexistuje.
Zkoušel jsem si vydumpovat session_id pomoci funkce session_id() a u obou requestů, které posílám je session_id stejné
Pro posílání requestů používám GuzzleHttp/http
Kód
// prvni request
$authResponse = $client->request('GET', $webUrl);
$cookie = $authResponse ->getHeader('cookie');
// druhy request
$response = $client->request('GET', $webUrl, array(
'cookie' => $cookie,
));
Na straně server (webu B) je jen jednoduchá podmínka která zapisuje do session pokud neexistuje.
Vůbec nechápu jak je možné, že mám stejné session_id ale data v session nemam.
V configu mám nastavenou expiracy session na 30 dnů.
session:
autoStart: auto
expiration: +30 days
savePath: "%tempDir%/sessions"
Pokud tyto 2 url adresy (requesty) zavolám ručně po sobě, zadáním adresy do prohlížeče, pak si to zapsanou session pamatuje, ale když to mám takhle v aplikaci tak uložená session data zmizí.
Budu rád za jakékoliv rady.
Editoval ondrej256 (16. 4. 2016 23:21)
- CZechBoY
- Člen | 3608
Podle dokumentace té knihovny vyplývá použití cookies úplně jinak než to používáš ty: http://docs.guzzlephp.org/…ckstart.html#…