Ztráta SESSION při druhém requestu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ondrej256
Člen | 187
+
0
-

Zdravím,

ve své aplikaci komunikuju s druhým webem (web B) následujícím způsobem:

  1. Ze své aplikace pošlu Request na web B
  2. Na webu B se do session uloží hodnota $_SESSION[‚tajnahodnota‘]
  3. Do své aplikace obdržím response
  4. Vytvořím nový Request, vložím do něj cookies z reponse (z bodu 3) a pošlu opět na web B
  5. 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
+
0
-

Podle dokumentace té knihovny vyplývá použití cookies úplně jinak než to používáš ty: http://docs.guzzlephp.org/…ckstart.html#…

ondrej256
Člen | 187
+
0
-

Díky, nakoplo mně to, zkoušel jsem různé varianty, ale vždycky jsmem měl chybu v parametru ‚cookie‘, který má být správně ‚cookies‘. Proto mě to nikdy nefungovalo ať sem experimentoval jak chtěl

Editoval ondrej256 (17. 4. 2016 0:13)