Automatic cookie handling for Amp's HTTP client.

Fund package maintenance!

v1.1.0 2020-03-03 16:53 UTC

This package is auto-updated.

Last update: 2020-12-29 18:21:11 UTC


Build Status CoverageStatus License

This package provides automatic cookie handling as a plugin for amphp/http-client.


This package can be installed as a Composer dependency.

composer require amphp/http-client-cookies


Amp\Http\Client\Cookie\CookieInterceptor must be registered as a NetworkInterceptor to enable automatic cookie handling. It requires a CookieJar implementation, where you can choose between InMemoryCookieJar, FileCookieJar and NullCookieJar.


use Amp\Http\Client\Cookie\CookieInterceptor;
use Amp\Http\Client\Cookie\InMemoryCookieJar;
use Amp\Http\Client\HttpClientBuilder;
use Amp\Http\Client\Request;
use Amp\Http\Client\Response;
use Amp\Loop;

require __DIR__ . '/vendor/autoload.php';

Loop::run(static function () {
    $cookieJar = new InMemoryCookieJar;

    $httpClient = (new HttpClientBuilder)
        ->interceptNetwork(new CookieInterceptor($cookieJar))

    /** @var Response $firstResponse */
    $firstResponse = yield $httpClient->request(new Request(''));
    yield $firstResponse->getBody()->buffer();

    /** @var Response $secondResponse */
    $secondResponse = yield $httpClient->request(new Request(''));
    yield $secondResponse->getBody()->buffer();

    /** @var Response $otherDomainResponse */
    $otherDomainResponse = yield $httpClient->request(new Request(''));
    yield $otherDomainResponse->getBody()->buffer();

    print "== first response stores cookies ==\r\n";
    print \implode("\r\n", $firstResponse->getHeaderArray('set-cookie'));
    print "\r\n\r\n";

    print "== second request sends cookies again ==\r\n";
    print \implode("\r\n", $secondResponse->getRequest()->getHeaderArray('cookie'));
    print "\r\n\r\n";

    print "== other domain request does not send cookies ==\r\n";
    print \implode("\r\n", $otherDomainResponse->getRequest()->getHeaderArray('cookie'));


More extensive code examples reside in the examples directory.


amphp/http-client-cookies follows the semver semantic versioning specification like all other amphp packages.


If you discover any security related issues, please email instead of using the issue tracker.


The MIT License (MIT). Please see LICENSE for more information.