Ich habe eine PHP-Webanwendung, die Anfragen an eine andere PHP-API stellt. Ich benutze Guzzle, um die HTTP-Anfragen zu machen, indem ich das $_COOKIES
Array an $options['cookies']
übergebe. Ich mache das, weil die API die gleiche Laravel-Sitzung wie die Frontend-Anwendung verwendet. Ich habe vor kurzem zu Guzzle 6 aufgerüstet und ich kann nicht mehr $_COOKIES
an die $options['cookies']
übergeben (Ich bekomme einen Fehler über die Notwendigkeit, eine CookieJar
zuweisen). Meine Frage ist, wie kann ich die im Browser vorhandenen Cookies an meine Guzzle 6-Client-Instanz übergeben, damit sie in die Anfrage an meine API aufgenommen werden?Weitergabe von Cookies vom Browser zu Guzzle 6 Client
6
A
Antwort
5
Versuchen Sie so etwas wie:
/**
* First parameter is for cookie "strictness"
*/
$cookieJar = new \GuzzleHttp\Cookie\CookieJar(true);
/**
* Read in our cookies. In this case, they are coming from a
* PSR7 compliant ServerRequestInterface such as Slim3
*/
$cookies = $request->getCookieParams();
/**
* Now loop through the cookies adding them to the jar
*/
foreach ($cookies as $cookie) {
$newCookie =\GuzzleHttp\Cookie\SetCookie::fromString($cookie);
/**
* You can also do things such as $newCookie->setSecure(false);
*/
$cookieJar->setCookie($newCookie);
}
/**
* Create a PSR7 guzzle request
*/
$guzzleRequest = new \GuzzleHttp\Psr7\Request(
$request->getMethod(), $url, $headers, $body
);
/**
* Now actually prepare Guzzle - here's where we hand over the
* delicious cookies!
*/
$client = new \GuzzleHttp\Client(['cookies'=>$cookieJar]);
/**
* Now get the response
*/
$guzzleResponse = $client->send($guzzleRequest, ['timeout' => 5]);
und hier ist, wie sie wieder raus:
$newCookies = $guzzleResponse->getHeader('set-cookie');
Hoffe, es hilft!
Verwandte Themen
- 1. PHP: Guzzle 6 + Guzzle-Cache-Middleware
- 2. Testen von Guzzle 6 Download Progress
- 3. 6 Guzzle - Get Anfrage Gesamtzeit
- 4. Guzzle 6, Anfrage-String bekommen
- 5. Guzzle 6 senden mehrteilige Daten
- 6. Ich muss alle Cookies vom Browser bekommen
- 7. Moving Curl Client ssl zu Guzzle
- 8. Weitergabe von Cookies an Subdomain auf localhost
- 9. Wie profile ich Guzzle 6 Anfragen?
- 10. Proper Weg zu senden (POST) xml mit guzzle 6
- 11. Guzzle Http Client und Autorisierung in LinkedIn
- 12. Weitergabe von Cookies in http Anfrage von klassischen Asp Seite
- 13. Vermeiden Pass durch Bezugnahme in Guzzle 6 Asynchrone von Pool
- 14. Schwerwiegender Fehler: Aufruf zu undefinierter Methode GuzzleHttp \ Client :: request() mit Guzzle 6
- 15. Ist dies eine gute/sichere Möglichkeit, serverseitige Cookies vom Client
- 16. Cookies nicht in Safari 6
- 17. Wie protokolliert man alle API-Aufrufe mit Guzzle 6
- 18. Catch Ausnahme von guzzle
- 19. Wie benutze ich instagram api mit guzzle 6+ und laravel?
- 20. Zerstören von Cookies aus SWT-Browser
- 21. Weitergabe von Cookies aus dem WebBrowser-Steuerelement an htmlAgilityPack WebClient()
- 22. Rufen Sie den gesamten XML-Antworttext mit Guzzle 6 HTTP Client ab.
- 23. Verwenden von PHP Guzzle HTTP 6 zum Senden von JSON mit Daten, die bereits codiert sind
- 24. Zugriff auf Browser-Cookies von Flex
- 25. Javascript Websocket Client Hinzufügen von Cookies zu Header
- 26. Benutzer/Browser Fingerabdrucks ohne Cookies
- 27. Cookies im Browser löschen Schließen
- 28. Welche Browser unterstützen HttpOnly-Cookies?
- 29. HttpModule empfängt keine Cookies auf IIS 6
- 30. Silent Print vom Browser